Опитвам се да емулирам сценарий, при който детето, породено от мултипроцесорния пул на 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