1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #!/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==
-
upload with new input
-
result: Success time: 0.14s memory: 44208 kB returned value: 0
sum=78.0
DEBUG:Thread-1:2013-01-14 15:45:22,287 got (5, 5) DEBUG:Thread-1:2013-01-14 15:45:22,287 got (87, 2) DEBUG:Thread-1:2013-01-14 15:45:22,287 got (65, 4) DEBUG:Thread-1:2013-01-14 15:45:22,287 got (10, 10) DEBUG:Thread-1:2013-01-14 15:45:22,287 got (1, 0) ERROR:Thread-1:2013-01-14 15:45:22,287 work(1, 0) failed Traceback (most recent call last): File "prog.py", line 11, in work return x / y, None ZeroDivisionError: integer division or modulo by zero DEBUG:Thread-1:2013-01-14 15:45:22,288 got (0, 1) DEBUG:Thread-2:2013-01-14 15:45:22,287 got (10, 4) DEBUG:Thread-3:2013-01-14 15:45:22,287 got (78, 5)


