from multiprocessing import Pool, TimeoutError
import os
import signal
def worker(i):
pid = os.getpid()
print('pid =', pid, flush=True)
if i == 1:
os.kill(pid, signal.SIGTERM)
return i * i
if __name__ == '__main__':
with Pool(1) as pool:
async_results = [pool.apply_async(worker, args=(i,)) for i in (1, 2)]
for async_result in async_results:
try:
value = async_result.get(.2) # Wait for a result
except TimeoutError:
print('Timeout!')
else:
print('result =', value)
ZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wsIFRpbWVvdXRFcnJvcgppbXBvcnQgb3MKaW1wb3J0IHNpZ25hbAoKZGVmIHdvcmtlcihpKToKICAgIHBpZCA9IG9zLmdldHBpZCgpCiAgICBwcmludCgncGlkID0nLCBwaWQsIGZsdXNoPVRydWUpCiAgICBpZiBpID09IDE6CiAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdURVJNKQogICAgcmV0dXJuIGkgKiBpCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgd2l0aCBQb29sKDEpIGFzIHBvb2w6CiAgICAgICAgYXN5bmNfcmVzdWx0cyA9IFtwb29sLmFwcGx5X2FzeW5jKHdvcmtlciwgYXJncz0oaSwpKSBmb3IgaSBpbiAoMSwgMildCiAgICAgICAgZm9yIGFzeW5jX3Jlc3VsdCBpbiBhc3luY19yZXN1bHRzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzeW5jX3Jlc3VsdC5nZXQoLjIpICMgV2FpdCBmb3IgYSByZXN1bHQKICAgICAgICAgICAgZXhjZXB0IFRpbWVvdXRFcnJvcjoKICAgICAgICAgICAgICAgIHByaW50KCdUaW1lb3V0IScpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludCgncmVzdWx0ID0nLCB2YWx1ZSkK