|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 32640. Ответов 421
Метки вопросы наследования (Все метки)
начало было положено в ветке - Считать текстовые файлы из папки - там и возник вопрос об Архитектуре...
собрала... осталось отображение создать (типа I_tbl_Show) и пронаследовать ? в разные классы пункта назначения (или на консоль, или в файл, или в БД, или допустим ещё в форму)... N.B. классы (пункты-назначения) делать не надо - эти View уже реализованы разработчиками того ПО, на котором сейчас идёт работа... а) пока что можно просто прописать функции-члены класса; и по месту использовать, что надо при разработке - в файл или на консоль; б) в перспективе для Release - реализовать и откомпилировать и выгрузку и в файл, и выгрузку в БД, и отражение в DataGrid... === !! Т.Е. если в Release захочется и выгрузку в текст, и в БД, и допустим ещё в форму (например с разных кнопок сделать) - тут уж лучше и писать, как положено, наследование??... -- к слову из прошлой ветки о: === Обоснование выбора уровня Абстракции (I_tbl_Show со всеми виртуальными функциями): чтобы не дублировать код-сбора-для-выгрузки -- сделать class Table - и класс-интерфейс I_tbl_Show, в котором обозначить virtual-функции выгрузки... эти функции определить в др. классах - типа Interface (IwriteCSV, IwriteDB, IwriteDataGrid)... p.s. классы консоль, файл, бд, DataGrid - не создаём, т.к. эти пункты назначения уже присутствуют... p.p.s. вывести конечные интерфейсы с определёнными методами записи на кнопки... === ИЛИ то, что подчёркнуто чуть выше, стоит реализовать в одном классе Table, и здесь же задать все virtual функции ?? === на скрине: синие - классы, зелёные - интерфейсы (в с++ по сути тоже классы) птицами отмечены уже кое-как реализованные классы (2 птицы) курсивные стрелки - отсутствие наследования ![]() Добавлено через 7 минут вобщем вопрос: class Table и класс I_Tbl_Show - объединить или нет? Добавлено через 10 минут p.p.s. чтобы избежать проблем Ромба и такого: Неоднозначность при множественном наследовании
0
|
||||
| 11.03.2020, 10:51 | |
|
Ответы с готовыми решениями:
421
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.05.2020, 20:43 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||
| 28.05.2020, 21:00 [ТС] | |||||||
|
=== вот, например, беру 1-ю попавшуюся реализацию: Кликните здесь для просмотра всего текста
- правильно ли я вас поняла и правильно ли применила в main() под спойлером ?? -- т.е. совсем без циклов... - 1 строка - у меня выполняется в 10-ти потоках (где я её потом join'ю? - хотя у меня packaged_task - наверно там и собирается всё), т.е. по сути ~ в 2 раза быстрее (т.к. 2 ядра) или даже ещё быстрее... ? Добавлено через 4 минуты и как мне добавить и запустить туда следующую фразу "Hello again"?.. - в порядке очерёдности в цикле?.. (ну допустим - это имитация подгрузки 2-х линков через пул потоков) - как должно выглядеть?.. и как расставить мьютексы в main'e? ... или они вроде уже в классе/структуре расставляются, похоже там в коде
0
|
|||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 28.05.2020, 21:08 | |||||||
1
|
|||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 28.05.2020, 21:11 [ТС] | |
|
ок, завтра буду пробовать... зациклить на моё тз... если ускорится
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
| 28.05.2020, 21:11 | ||||||
|
Или то же самое
1
|
||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 31.05.2020, 19:10 [ТС] | ||
|
Потоки и процессы - правда Python, но разница между процессом и потоком очерчена достаточно - мой вывод: хоть с 1-го сокета и можно запустить только 1 процесс, но количество потоков в нём можно сделать любое...
с форума на U++ (пост 19 September 2017 10:12) чётко вырисовывается последовательность, что сначала Loop по Arr, внутри него Loop на свободный CPU Core... (когда они ещё разрабатывали свои библы для многопоточности)... т.е. по сути уровень_абстракции_Jobs с вложенным уровнем_абстракции_Workers рассматриваются... Scheduler'a там я вроде не заметила - хотя если это lightweight-вариант, как название той ветки, то может он и не нужен, раз вам код в полу_ручном варианте выбирает себе Worker'a... насколько поняла... 10 советов по многопоточному программированию на Java - 2 из которых (4 и 8) вы уже оставили в этой ветке... !3-й и в связи с ним 9-й мне тоже показались очень заслуживающими внимания... в связи с этим моё заключение: Планирование Потоков - вообще очень важный этап в написании ТЗ - чтобы бездумным распараллеливанием не добавить тормозов... ... как и стремление к уменьшению областей синхронизации важно в коде (где потоки сливаются в один, условно, говоря, или использование атомарных счётчиков)...также на заметку: - join - "блокирует дальнейшее выполнение родительского потока, до тех пор, пока не будет завершён дочерний" -detach - "неблокирующий метод" = ну это на случай если всё-таки начну выделять потоки сама в рукописном классе... потому что все имеющиеся в std классы по потокам, думается мне, нуждаются в создании для них удобного wrapper'a, чтобы использовать без необходимости штамповать код дублируя его... в принципе thread_pool выше - один из вариантов приемлемой обёртки... === но ваш последний async-пример без использования pool_thread (не лезу читать std::future header) - тоже заинтересовал - вообще без thread_pool ?? - будет ли такая же скорость? === (ой не хочу усложнять ход мыслей - может, по простому сам цикл for Arr и есть условный Producer, а его внутренности условный Consumer?.. если суть Producer'a задавать атомарные единицы для итерирования) === Кликните здесь для просмотра всего текста
всё-таки
- всё-таки потоки - это новый уровень абстракции, не связанный с итерированием своих баранов... хоть atomic-обёртки для итератора и стоит не забывать при параллельной обработке данных... но сами птоки вступают в работу внутри каждого шага Loop по циклу данных...
=== вопрос, КАК расставить Семафоры, чтобы не колотить по чужому сайту остаётся (если запуск потоков осуществлять внутри Loop Arr) ... - пример named_semaphore (на линк вышла отсюда)- наверно, пока обкатаю boost'овские (не WinAPI) - как-то проще кажется (более высокоуровнево в boost'e, чем в std)... если пойму как и стоит ли... всё-таки подбор библиотеки - занятие не из лёгких, когда свои ещё не пишешь...=== Методика разработки многопоточных приложений: принципы и практическая реализация -- всё-таки с отладкой потоков и отловом исключений я пока на вы P.S. Аппаратная реализация - вот бы её хватало... что-то замечаю, что даже vba-код сам по себе уже стал как-то подгружать конкурентно, а не как раннее - последовательно... сама удивляюсь ему
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 31.05.2020, 19:16 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 31.05.2020, 19:21 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 31.05.2020, 19:34 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||||
| 01.06.2020, 22:37 [ТС] | ||||||||
|
?? если через std::map -- то, полагаю, как-то так:
p.s. вообще семафоры поуниверсальнее, чем condition_variables. т.к. последние использоваться начали для win7... спасибо за совет... p.p.s. и ещё вопрос: может стоит семафор включать-выключать на, например, 10 линков - so named многоместный турникет ?.. хотя для данного случая (инкрементирование i) - это не пройдёт ? (т.к. эти 10 между собой устроят race condition)... === вобщем правильно ли моё видение вашего совета по коду ? или можно быстрее (т.е. уменьшить количество мест синхронизации или использовать иные примитивы синхронизации)... хотя по совсем atomic - выдержку видела - видимо, не совсем comme ils faut
0
|
||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 01.06.2020, 22:43 | |||
|
Добавлено через 1 минуту
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 01.06.2020, 23:17 [ТС] | ||||
|
я i рассматривала, как shared_value - вот и расставила до обращения к нему и после обращения к нему... всё-таки каждое i в поток
(мне вообще о нём надо забыть в этом тз, когда дело доходит до потоков) Добавлено через 4 минуты Добавлено через 4 минуты
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||||||||
| 02.06.2020, 10:47 [ТС] | ||||||||||||
![]() Добавлено через 10 минут === я прбовала сделать такой вариант - для чтения файлов:
с такими функциями
- не знаю, насколько такой подход может быть логичен? - тут вроде вообще без синхронизации - не будет ли race condition?.. хотя вроде не должно быть - т.к. просто загоняем в async всё, что надо сделать, а потом типа, наверно, коллбэком достаём из фьюча?.. я пока механику асинхронности вижу так...
0
|
||||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 02.06.2020, 15:30 | ||
|
Кроме того, эта пара функций должна вызываться в одном потоке.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||||
| 02.06.2020, 20:39 [ТС] | ||||||||
|
пару линков всё-таки оставлю:
writer-reader, aka producer-consumer по сути, вероятно... (чтобы знать как выглядит) и winAPI семафоры... в std - только в c++v.20 counting_semaphore появляется - если всё-таки "многоместный турникет" выбрать... === Добавлено через 12 минут по типу такого
потом в них применять эту пару, чтобы задействовать семафор "до" и "после" Критической Секции (вопрос: где она??)... и итератор, как shared_value, как мне показалось ранее, тут не причём... ? но всё равно как-то визуализировать потоки сложно - если за async'ом стоит пул потоков... ?.. как туда впихнуть wait-notify семафора для каждого потока... - в саму лямбду...
0
|
||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 02.06.2020, 20:47 | ||
|
Добавлено через 3 минуты Я что-то потерял нить, что ты вообще пытаешься сделать. Подозреваю, там задача довольно простая
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||
| 02.06.2020, 22:01 [ТС] | |||||
|
вобщем вопрос: async запускать на каждую итерацию по циклу или, как я пробовала с подгрузкой из файлов - сам цикл по линкам (весь) разместить в asynce?.. и там же как-то пропускать каждый шаг цикла через семафор... опять же только загрузку или на время сохранения в файл семафор тоже оставлять в заблокированном виде (wait) ? чтобы не членить на процессы для того, чтобы они потом стояли в очередь на семафор?.. (наверно, в этом вопрос - сократить этапы синхронизации) Добавлено через 7 минут я тоже только подозреваю... беру список линков - (наверно переделаю в map - к ним пути файлов, куда сохраняться) - гружу асинхронно по возможности не разрывая связь - хотя запросы GET всё-таки отдельные объекты на каждый линк... но в любом случае - ещё потом и записать IO в файлы (каждый линк в свой файл)... и чтобы в максимально короткое время это сделать... вот и думаю, как разбросать по потокам...ИЛИ каждый линк в отдельный поток запускать (т.е. своя async для каждого)?.. как лучше? ... все линки к одному сайту - разные urls Добавлено через 4 минуты и нужен ли мне тут семафор ![]() Добавлено через 2 минуты p.s. это кстати жёлтое облако на скрине #1 ветки... Добавлено через 18 минут === кстати здесь я только счётчик по циклу меняю... но если цикл положить в async - то там свои дела - синхронизировать не надо... имхо
0
|
|||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 02.06.2020, 22:04 | ||
|
По сути там описан асинхронный обработчик задач. Эти задачи кладутся в очередь, потом потоки забирают их оттуда и выполняют. Каждая задача - это твой линк, который нужно загрузить/сохранить. Так как сайт у тебя один, то для того, чтобы ограничить количество коннектов к нему, достаточно будет просто запустить ограниченное количество потоков-обработчиков (оно там параметром задаётся)
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 02.06.2020, 22:13 [ТС] | ||
|
p.s.
но Single lane bridge Synchronization using semaphores лучше погуглить... (если сайт не пропустит все линки быстро) Добавлено через 4 минуты
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 03.06.2020, 09:03 [ТС] | |||
Очередь конкурирует за процессорное время... Многоядерность - выгодна для математических вычислений (если в рамках входящих в функцию параметров выделяются atomic элементы и/или шаги обработки)... p.s. и много интересных примеров - правда на header'e от Stanford University... но header и свой когда-нибудь можно написать... а задачу о ticketSellers - о том, какой поток продал сколько ticket'ов - для практики полезно хотя бы визуализировать те потоки... как и др задач...p.p.s. после Планирования Потоков см. Менеджмент потоков (с пониманием основных проблем - race conditions, deadlocks, greedy for resources etc)... и цикл статей Кенни Керра полезен в этом контексте...
0
|
|||
| 03.06.2020, 09:03 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|