示例代码 python 2.7
# -*- coding: utf-8 -*- from concurrent import futures def test(i): print i def mu(): list=["a","b","c","d"] with futures.ThreadPoolExecutor(max_workers=2) as executor: future_tasks=dict((executor.submit(test, i), i) for i in list) for future in futures.as_completed(future_tasks): print future.result() if __name__ == '__main__': mu()
打印结果
a b c d None None None None
在学 python.照着官方文档写的, 疑惑的是 开 2 个 works, 第一个线程把 list 都打印了,第二个线程返回 none.
不知道是哪里出错了 ? 请知道的朋友说一下。谢谢啦
是我理解有误了,以为一个线程干了所有活,另一个啥都没做呢
def test(i): print i 改成 def test(i): time.sleep(10) print i
就能发现,两个线程都在工作
![]() | 1 justou 2016-07-05 02:03:32 +08:00 ![]() None 是两个线程中 test 的返回值, 两个线程都在抢着打印. py3 的 print 不是函数调用不报错? |
2 quxw 2016-07-05 09:57:21 +08:00 ![]() a,b,c,d 是 test 里的 print test 又没有返回值,当然是 None 了 |
3 mongost3t 2016-07-05 10:00:48 +08:00 ![]() 你 test 没返回数据, result()就是 None 了 |
4 mongost3t 2016-07-05 10:01:12 +08:00 咦楼上上…… |