赞
踩
在测试Python的多线程时,根据官方的说法,concurrent.futures在Python3中已经内置了,不需要下载安装,如果是Python2则需要运行pip install futures进行安装。。。
这样导入,两种写法均可
- import concurrent.futures
- # from concurrent import futures
'运行
但是,,,我是python3.7,竟然给我报出了下面的错误,我直接裂开
ModuleNotFoundError: No module named 'concurrent'
网上没找到解决方法,我一度怀疑我的python3没有内置这个东西,或者被误删了,然后打开阿里云windows服务器,上面装的是Python3.8,在VSCode上面跑了一下代码,报了其他错误,不过还是给了我很大惊喜
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\concurrent\futures\process.py", line 102, in _python_exit
它给我提示了concurrent.futures模块在哪个位置!顺藤摸瓜找到之后,对比了一下,发现在相同的路径我的电脑缺少了一个文件夹!难道是我误删了?
把concurrent文件夹拷贝到Python37\Lib下面,再次在本地运行代码,,哈哈,完美运行!
- # # concurrent是异步的线程、进程包
- # submit(function,argument):调度函数(可调用的对象)的执行,将argument作为参数传入
- # map(function,argument):将argument作为参数执行函数,以异步的方式
- # from concurrent.futures import ThreadPoolExecutor(max_workers) # 线程池
- # from concurrent.futures import ProcessPoolExecutor(max_workers) # 进程池
- # max_workers 表示最多可并行执行多少任务
- import concurrent.futures
- # from concurrent import futures
- import time
- number_list=[i for i in range(1,11)]
- def add_item(x):
- result=count(x)
- return result
- def count(number):
- for i in range(0,10000000):
- i+=1
- return i*number
-
- if __name__ == '__main__':
- # 单线程裸奔
- s=time.time()
- for item in number_list:
- print(add_item(item))
- print(time.time()-s)
-
- # 线程池执行CPU密集型任务
- s2=time.time()
- with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
- futures=[executor.submit(add_item,item) for item in number_list]
- for future in concurrent.futures.as_completed(futures):
- print(future.result())
- print(time.time()-s2)
-
- # 进程池执行CPU密集型任务
- s3=time.time()
- with concurrent.futures.ProcessPoolExecutor(max_workers=5) as executor:
- futures=[executor.submit(add_item,item) for item in number_list]
- for future in concurrent.futures.as_completed(futures):
- print(future.result())
- print(time.time()-s3)
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreBlack.png)
因为是计算密集型任务,多进程还是比多线程要快不少的,多线程适用于I/O密集型任务
最后我把concurrent文件夹压缩上传到了网盘里面,附上链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。