|
|
||||||
Можно ли ждать завершения одновременно сразу нескольких потоков?29.01.2017, 00:05. Показов 3127. Ответов 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
Запуск одновременно нескольких потоков Запуск нескольких потоков одновременно Запуск нескольких потоков одновременно
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|