#!/usr/bin/env python
import logging
from multiprocessing.dummy import Pool
debug = logging.getLogger(__name__).debug
def work(x_y):
try:
x, y = x_y # do some work here
debug('got %r', x_y)
return x / y, None
except Exception as e:
logging.getLogger(__name__).exception('work%r failed', x_y)
return None, e
def main():
logging.basicConfig(level=logging.DEBUG,
format="%(levelname)s:%(threadName)s:%(asctime)s %(message)s")
inputlist = [ (5,5),(10,4),(78,5),(87,2),(65,4),(10,10), (1,0), (0,1) ]
pool = Pool(3)
s = 0.
for result, error in pool.imap_unordered(work, inputlist):
if error is None:
s += result
print("sum=%s" % (s,))
pool.close()
pool.join()
if __name__ == "__main__":
main()
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCmltcG9ydCBsb2dnaW5nCmZyb20gbXVsdGlwcm9jZXNzaW5nLmR1bW15IGltcG9ydCBQb29sCgpkZWJ1ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKS5kZWJ1ZwoKZGVmIHdvcmsoeF95KToKICAgIHRyeToKICAgICAgICB4LCB5ID0geF95ICMgZG8gc29tZSB3b3JrIGhlcmUKICAgICAgICBkZWJ1ZygnZ290ICVyJywgeF95KQogICAgICAgIHJldHVybiB4IC8geSwgTm9uZQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKS5leGNlcHRpb24oJ3dvcmslciBmYWlsZWQnLCB4X3kpIAogICAgICAgIHJldHVybiBOb25lLCBlCgpkZWYgbWFpbigpOgogICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkRFQlVHLAogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IiUobGV2ZWxuYW1lKXM6JSh0aHJlYWROYW1lKXM6JShhc2N0aW1lKXMgJShtZXNzYWdlKXMiKQoKICAgIGlucHV0bGlzdCA9IFsgKDUsNSksKDEwLDQpLCg3OCw1KSwoODcsMiksKDY1LDQpLCgxMCwxMCksICgxLDApLCAoMCwxKSBdCiAgICBwb29sID0gUG9vbCgzKQoKICAgIHMgPSAwLgogICAgZm9yIHJlc3VsdCwgZXJyb3IgaW4gcG9vbC5pbWFwX3Vub3JkZXJlZCh3b3JrLCBpbnB1dGxpc3QpOgogICAgICAgIGlmIGVycm9yIGlzIE5vbmU6CiAgICAgICAgICAgcyArPSByZXN1bHQKICAgIHByaW50KCJzdW09JXMiICUgKHMsKSkKICAgIHBvb2wuY2xvc2UoKQogICAgcG9vbC5qb2luKCkKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgIG1haW4oKQ==