我正在使用 Ubuntu 12.04 服务器 x64、Python 2.7.3、futures==2.1.5、eventlet==0.14.0
有人遇到同样的问题吗?
import eventlet
import futures
import random
# eventlet.monkey_patch() # Uncomment this line and it will hang!
def test():
if random.choice((True, False)):
raise Exception()
print "OK this time"
def done(f):
print "done callback!"
def main():
with futures.ProcessPoolExecutor() as executor:
fu = []
for i in xrange(6):
f = executor.submit(test)
f.add_done_callback(done)
fu.append(f)
futures.wait(fu, return_when=futures.ALL_COMPLETED)
if __name__ == '__main__':
main()
如果您取消注释该行,此代码将挂起。我只能通过按 Ctrl+C 来停止它。在这种情况下,将打印以下 KeyboardInterrupt 回溯:https://gist.github.com/max-lobur/8526120#file-traceback
这适用于 ThreadPoolExecutor。
任何反馈表示赞赏