Я пытаюсь сымитировать сценарий, в котором ребенок, порожденный многопроцессорным пулом python, погибает. Подпроцесс никогда не возвращается, но я хотел бы, чтобы родитель получал уведомление в таком сценарии. Я использую тестовый код:
import multiprocessing as mp
import time
import os
result_map = {}
def foo_pool(x):
print x,' : ',os.getpid()
pid = os.getpid()
if x == 1:
os.kill(pid,9)
return x
result_list = []
def log_result(result):
print 'callback',result
def apply_async_with_callback():
print os.getpid()
pool = mp.Pool()
for i in range(2):
result_map[i] = pool.apply_async(foo_pool, args = (i, ), callback = log_result)
pool.close()
pool.join()
for k,v in result_map.iteritems():
print k,' : ',v.successful()
print(result_list)
if __name__ == '__main__':
apply_async_with_callback()
multiprocesing.Event
. Если дочерний элемент по какой-то причине убит, попробуйте установить соответствующий обработчик сигнала, чтобы уведомить родителя о сигнале, который его убил. - person Reut Sharabani   schedule 25.01.2015