私はプロセスのpythonプールを持っています。プロセスのいずれかで例外が発生した場合、プールの実行を終了したいです
プール内のすべてのプロセスに参加したので、参加はすべてのプロセスが終了するのを待ちます。ターゲット関数内で sys.exit(1) を上げると、結合がまだプロセスの完了を待っているため、システムは無限に待機します。
コードで結合を使用しているときに実行を終了する方法
from multiprocessing import Pool
import time
import sys
def printer(ip):
try:
for _ in xrange(5):
print ip+str(_)
time.sleep(1.0)
except Exception as e:
print e
sys.exit(2)
def test():
pool = Pool(processes=2)
for i in ["hello",5]:
result = pool.apply_async(printer,(i,))
pool.close()
pool.join()
print "good bye"
test()