|
|
||||||
Можно ли ждать завершения одновременно сразу нескольких потоков?29.01.2017, 00:05. Показов 3151. Ответов 16
Метки нет (Все метки)
Можно ли ждать завершения одновременно сразу нескольких потоков или выставления нескольких эвентов ?
Нечто вроде аналога WaitForMultiplyObjects(). В псевдокоде нечто вроде:
0
|
||||||
| 29.01.2017, 00:05 | |
|
Ответы с готовыми решениями:
16
Правильно создать пул потоков, запустить эти потоки одновременно и дождаться их завершения Как дождаться завершения нескольких потоков Запуск нескольких независимых потоков. Дождаться завершения всех (C++ 11) |
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||||
| 29.01.2017, 00:08 | ||||||
0
|
||||||
|
|
||
| 29.01.2017, 00:12 [ТС] | ||
|
Мне нужно знать завершился ли один из потоков и какой именно... (И естественно без бесконечных циклов пожирающих ресурсы) Тоже самый вопрос возникает насчет объектов-событий и процессов.
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 29.01.2017, 00:27 | |
|
Avazart, нужно на голом Python? Если использовать pyqt, то достаточно просто сделать.
Или можно использовать очереди. Каждый поток перед завершением пусть что нибудь кидает в очередь, а в главном потоке вызоваем метод get, который будет ждать, пока в очереди появиться хоть что-то.
0
|
|
|
|
||||||
| 29.01.2017, 00:29 [ТС] | ||||||
|
Я нашел решение для потоков, через очередь.
0
|
||||||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 29.01.2017, 00:29 | |
|
2. Для процессов можно сделать
0
|
|
|
|
|||||||||||
| 29.01.2017, 16:30 [ТС] | |||||||||||
|
Задумка вот в чем:
Т.е что бы решить проблему Реализация и использование потоков в PyQt Добавлено через 15 часов 50 минут Все бы хорошо, но если заменить на ProcessPoolExecutor процессы виснут намертво.
0
|
|||||||||||
| 29.01.2017, 17:28 | |||||||
0
|
|||||||
|
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
|
|||||||||||
| 29.01.2017, 18:15 | |||||||||||
|
Вы, кажется, q забыли передать
Как приблизительный вариант (если уж PoolExecutor)
0
|
|||||||||||
|
|
||||||||||
| 29.01.2017, 19:51 [ТС] | ||||||||||
|
Через колбек я тоже уже догадался, но обнаружил интересную вещь:
А иногда колбеки все же вызываются из создающего потока. Добавлено через 4 минуты У меня выводит примерно следующее:
Вообще какая то непонятная ерунда, я изменил max_workers=5 т.е по сути на каждую задачу должно быть по одному процессу, но выдает что все задачи находятся в одном процессе:
Добавлено через 41 минуту Судя по диспетчеру задач действительно создается 5 процессов, но заметно что в одном из этих процессов а именно у того чей pid выводит создается ~5...7 потоков, в остальных процессах ~2...4 потока. Т.е. как работает и можно ли назвать это нормальной работой ProcessPoolExecutor вообще ничего нельзя сказать.
0
|
||||||||||
|
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
|
||
| 29.01.2017, 19:53 | ||
|
os.getppid() - родительский процесс, так что, вроде, верно всё. А с потоком да, не понятно. Там в реализации создается поток, который
У меня в процессах по одному потоку, кроме родительского, там их 4 ~ 5
1
|
||
|
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
|
||
| 29.01.2017, 20:41 | ||
|
Добавлено через 3 минуты (Текущий процесс - os.getpid(), разница в одной p)
1
|
||
|
|
||||||||||||
| 29.01.2017, 21:27 [ТС] | ||||||||||||
|
Оказывается есть такая штука которую я искал concurrent.futures.wait c флагами:
Можно было её использовать... Добавлено через 6 минут Не по теме: Касательно использование этого для использования совместно с Qt интерфейсом Реализация и использование потоков в PyQt
1
|
||||||||||||
|
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
|
|
| 29.01.2017, 22:21 | |
|
Чтобы как-то подытожить с потоками
В моём случае в главном (родительском, том что обозначен как main) процессе 4 потока: 1. Главный поток - main, 2. Поток, явно нами созданный - creator, 3. Поток, созданный реализацией ProcessPoolExecutor, для обеспечения взаимодействия между главным и, создаваемыми PoolExecutor'ом, рабочими процессами (из него, в частности, вызываются колбеки), 4. Наконец, последний, создан реализацией multiprocessing.Queue. Queue используется внутри ProcessPoolExecutor'а для складирования результатов работы дочерних процессов. В дочерних процессах по одному потоку.
0
|
|
| 29.01.2017, 22:21 | |
|
Помогаю со студенческими работами здесь
17
Запуск одновременно нескольких потоков Запуск нескольких потоков одновременно Запуск нескольких потоков одновременно
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью.
Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|