2024-09-01
Python
00

官网文档:https://docs.python.org/zh-cn/3/library/concurrent.futures.html

Python有GIL,故多线程最好只用于io密集型程序,比如需要网络下载很多个文件,下面截取部分代码来展示如何使用:

python
from concurrent.futures import ThreadPoolExecutor, as_completed # 导入需要的包 threadPool = ThreadPoolExecutor(max_workers=140) # 线程池的池子大小,最多同时执行多少个任务,submit的任务数超过这个数字后后续任务会自行等待进入线程池 all_task = [threadPool.submit(self.download_01, url, path, delay * 1.5) for delay, url in enumerate(urls)] # 使用线程池ThreadPoolExecutor的submit方法发起任务,列表生成式里面装了所有任务的返回句柄。self.download_01是我的函数名称,url, path, delay * 1.5 全是我的self.download_01函数的参数。 for task in as_completed(all_task): # as_completed 可以判断列表里的线程是否完成 data = task.result() print("任务{} down load success".format(data)) # 打印结果 threadPool.shutdown(wait=True) # 释放线程池资源
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!