from concurrent.futures import ThreadPoolExecutor, as_completed, wait, FIRST_COMPLETED
from concurrent.futures import Future
from multiprocessing import Pool#未来对象,task的返回容器#线程池, 为什么要线程池
设置数量线程与semaphore相似,控制线程数量,多了会在池里等待其他线程空闲,
但是多了更多功能
#主线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值
#当一个线程完成的时候我们主线程能立即知道
#futures可以让多线程和多进程编码接口一致
import timedef get_html(times):time.sleep(times)print("get page {} success".format(times))return timesexecutor = ThreadPoolExecutor(max_workers=2) #同时运行的线程最多两个,多出来会等待
#通过submit函数提交执行的函数到线程池中, submit 是立即返回,提交后会立马执行 如果有空闲的线程的话
# task1 = executor.submit(get_html, (3))
# task2 = executor.submit(get_html, (2))#要获取已经成功的task的返回
urls = [3,2,4]
all_task = [executor.submit(get_html, (url)) for url in urls] #启动的线程列表
# for future in as_completed(all_task):
# data = future.result()
# print("get {} page".format(data))
#这里的打印顺序是 2 3 4 ,是按照完成的先后顺序打印的,一旦有完成就会打印 感觉这个更好用#wait
wait(all_task) # 等待所有的线程执行完,主线程在往下操作
wait(all_task, return_when=FIRST_COMPLETED) #第一个执行完,主线程往下执行
print("main")#通过executor的map获取已经完成的task的值
#urls = [3,2,4]
# for data in executor.map(get_html, urls): #对urls这个列表,一一的执行get_html这个函数
# print("get {} page".format(data)) #直接获取的data = future.result()
#这里的打印顺序是 3 2 4 和列表的一致# #done方法用于判定某个任务是否完成
# print(task1.done()) #True or False# print(task2.cancel()) #删除成功返回True 失败False ,在执行中或者执行完成是删除不了的 ,在没有开始执行执行,是可以删除的
# time.sleep(3)
# print(task1.done())
#
# #result方法可以获取task的执行结果 可用获得return的值
# print(task1.result())
详细解决方案
[python]线程池concurrent.futures ThreadPoolExecutor
热度:36 发布时间:2023-12-05 12:57:27.0
相关解决方案
- ASP.NET 2.0 AJAX Futures January CTP中的CTP是什么意思?解决思路
- ubuntu9.04上安装mic2 出错 (python setup.py build)
- ubuntu9.04下安装mic2 出错 (python setup.py build),该如何解决
- Qt4 设计员 无法生成 python 代码
- 请教如何理解JAVA、C++ Perl、PHP、Ruby、Python
- Qt4 设计师 无法生成 python 代码,该如何解决
- python sybase装配
- python fastcgi怎么获取POST的数据字段
- python(django框架) + mysql 的编码有关问题,求解
- "Nhs.Cui.Futures.Demonstrator.Controls"是开源的么?该怎么解决
- "Nhs.Cui.Futures.Demonstrator.Controls"是开源的么?该如何处理
- concurrent programming with java
- python html parser库lxml的引见和使用
- python html 转义有关
- Python 用HTMLParser解析HTML资料
- python fastcgi怎么获取POST的数据字段
- python 模拟Web登录与上载
- [Python]web服务器小结篇
- Python 于 webgame 的应用(上)
- SAE python web.py bootstrap 开发记要
- Python WEB运用框架纵览
- 一般目录上 Python 建立 Web 文件服务
- 数目字代码把大数据数字口语化(python+js) 数字代码
- python JSON string 的中文有关问题
- 线程池报java.util.concurrent.RejectedExecutionException错误
- python 兑现新版websocket协议 server
- 【python 学习之web篇】用python 3.1.2兑现crawler-C
- python――施用yaml数据格式,PK -> XML,JSON
- Learn Python The Hard Way学习(52) - 开始您的web游戏
- Python 自然语言处理