示例代码 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 1
None 是两个线程中 test 的返回值, 两个线程都在抢着打印.
py3 的 print 不是函数调用不报错? |
2
quxw 2016-07-05 09:57:21 +08:00 1
a,b,c,d 是 test 里的 print
test 又没有返回值,当然是 None 了 |
3
mongost3t 2016-07-05 10:00:48 +08:00 1
你 test 没返回数据, result()就是 None 了
|
4
mongost3t 2016-07-05 10:01:12 +08:00
咦楼上上……
|