У меня есть функция Python, украшенную 1-минутным тайм-аутом. Внутри этого я порождает один или несколько рабочих потоков, которые каждый запускает 2-минутный сон с помощью динамически выполненного скрипта (с помощью exec () в пользовательском исполнителе). Вот небольшая часть кода: < /p>
def _execute_parallel(self, input_params, connector_init_params, code, task):
order = -1
threads = []
output_queue = []
while input_params:
ipparam = input_params.pop(0)
order = order + 1
th = threading.Thread(target=self._execute, args=(connector_init_params, code, task, ipparam, order, output_queue,))
th.start()
threads.append(th)
for th in threads:
th.join()
return output_queue
< /code>
Фактическое поведение: < /p>
Если num_workers = 1, родитель попадает в 60-секундную тайм-аут, а единый работник также убит до его 2-минутного сна. /> Ожидаемое поведение:
детские потоки должны продолжать работать до завершения независимо от того, сколько создано, поскольку ни один из них не является темами демонов. Почему одного ребенка убивают, когда есть только один работник, но выживает, когда есть два? < /P>
среда: < /p>
python 3.9 на macos
Использование декора @timeout (поднимает исключение в основной нити через 60 с)
Custom Executior использует Exec () под примером, но и тем же поведение в этом поведенном примере. Время жизни потока, и как я могу гарантировать, что рабочие потоки всегда переживают родитель по времени?
Подробнее здесь: https://stackoverflow.com/questions/796 ... -but-survi
Ниды Python убиты, когда основная резьба выходит только с одним потоком, но выживает, когда создается более одного поток ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Python Multiprocessing VS резьба для CPU Bound Work на Windows и Linux
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-