Я использую класс процессов многопроцессорного модуля для запуска нескольких процессов, эти процессы выполняют некоторый скрипт и затем умирают. Что я хотел, тайм-аут, который должен применяться к каждому процессу, так что процесс умрет, если не удается выполнить во время тайм-аут. Я использую join(timeout)
для объектов процесса. Since the join() function doesn;t kill the process, it just blocks the process until it finishes
Использование join() для процессов, созданных с использованием многопроцессорности в python
Теперь мой вопрос: Есть ли какие-либо побочные эффекты использования join()
с timeout
..like, будут очищены процессы автоматически, после того, как основной процесс умирает ?? или я должен убить эти процессы вручную?
Я новичок в python и его многопроцессорном модуле, будьте терпеливы.
Мой код, который создает процессы в цикле ::
q = Queue()
jobs = [
Process(
target=get_current_value,
args=(q,),
kwargs=
{
'device': device,
'service_list': service_list,
'data_source_list': data_source_list
}
) for device in device_list
]
for j in jobs:
j.start()
for k in jobs:
k.join()
Почему вы не используете сигнальный модуль? https://docs.python.org/2/library/signal.html см. этот вопрос: http://stackoverflow.com/questions/492519/timeout-on-a-python-function-call – Kasramvd
Вопрос, кажется, работа с потоками ... Я использую многопроцессы, хотя – dotslash
Каковы фактически выполняемые дочерние процессы? Они * потребляют * из «очереди» вообще? – dano