result()函数
如果把result()放在第一个for循环,和放在第二个for循环有什么不同呢?
# coding:utf-8 import os import time import threading from concurrent.futures import ThreadPoolExecutor # 添加线程锁 lock = threading.Lock() def work(i): # lock.acquire() print(i, os.getpid()) time.sleep(1) # lock.release() return 'result %s' % i if __name__ == '__main__': print(os.getpid()) # 创建进程池 t = ThreadPoolExecutor(2) result = [] for i in range(20): # 在池中加入任务, 线程池有返回值 t_result = t.submit(work, (i,)) # result.append(t_result) print(t_result.result()) # for res in result: # print(res.result())
20
收起
正在回答
1回答
同学,你好!在第一个for 循环中输出result(),是把当前运行线程的返回值进行输出。遇到result()主线程会阻塞,执行完print(t_result.result())才会进行下一次循环,即执行一个线程并输出该线程的返回值。
第二个循环中输出result(),是将所有线程的返回结果加入到列表中,再对线程的返回值进行输出。祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星