fork download
  1. #!/usr/bin/env python
  2. import logging
  3. from multiprocessing.dummy import Pool
  4.  
  5. debug = logging.getLogger(__name__).debug
  6.  
  7. def work(x_y):
  8. try:
  9. x, y = x_y # do some work here
  10. debug('got %r', x_y)
  11. return x / y, None
  12. except Exception as e:
  13. logging.getLogger(__name__).exception('work%r failed', x_y)
  14. return None, e
  15.  
  16. def main():
  17. logging.basicConfig(level=logging.DEBUG,
  18. format="%(levelname)s:%(threadName)s:%(asctime)s %(message)s")
  19.  
  20. inputlist = [ (5,5),(10,4),(78,5),(87,2),(65,4),(10,10), (1,0), (0,1) ]
  21. pool = Pool(3)
  22.  
  23. s = 0.
  24. for result, error in pool.imap_unordered(work, inputlist):
  25. if error is None:
  26. s += result
  27. print("sum=%s" % (s,))
  28. pool.close()
  29. pool.join()
  30.  
  31. if __name__ == "__main__":
  32. main()
Success #stdin #stdout 0.14s 44208KB
stdin
Standard input is empty
stdout
sum=78.0