fork download
  1. from multiprocessing import Pool, TimeoutError
  2. import os
  3. import signal
  4.  
  5. def worker(i):
  6. pid = os.getpid()
  7. print('pid =', pid, flush=True)
  8. if i == 1:
  9. os.kill(pid, signal.SIGTERM)
  10. return i * i
  11.  
  12. if __name__ == '__main__':
  13. with Pool(1) as pool:
  14. async_results = [pool.apply_async(worker, args=(i,)) for i in (1, 2)]
  15. for async_result in async_results:
  16. try:
  17. value = async_result.get(.2) # Wait for a result
  18. except TimeoutError:
  19. print('Timeout!')
  20. else:
  21. print('result =', value)
  22.  
Success #stdin #stdout 0.06s 12732KB
stdin
Standard input is empty
stdout
pid = 349
pid = 353
Timeout!
result = 4