当前位置:   article > 正文

Python报错ModuleNotFoundError: No module named ‘concurrent‘_no module named concurrent.futures

no module named concurrent.futures

在测试Python的多线程时,根据官方的说法,concurrent.futures在Python3中已经内置了,不需要下载安装,如果是Python2则需要运行pip install futures进行安装。。。

这样导入,两种写法均可

  1. import concurrent.futures
  2. # 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下面,再次在本地运行代码,,哈哈,完美运行! 

  1. # # concurrent是异步的线程、进程包
  2. # submit(function,argument):调度函数(可调用的对象)的执行,将argument作为参数传入
  3. # map(function,argument):将argument作为参数执行函数,以异步的方式
  4. # from concurrent.futures import ThreadPoolExecutor(max_workers) # 线程池
  5. # from concurrent.futures import ProcessPoolExecutor(max_workers) # 进程池
  6. # max_workers 表示最多可并行执行多少任务
  7. import concurrent.futures
  8. # from concurrent import futures
  9. import time
  10. number_list=[i for i in range(1,11)]
  11. def add_item(x):
  12. result=count(x)
  13. return result
  14. def count(number):
  15. for i in range(0,10000000):
  16. i+=1
  17. return i*number
  18. if __name__ == '__main__':
  19. # 单线程裸奔
  20. s=time.time()
  21. for item in number_list:
  22. print(add_item(item))
  23. print(time.time()-s)
  24. # 线程池执行CPU密集型任务
  25. s2=time.time()
  26. with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
  27. futures=[executor.submit(add_item,item) for item in number_list]
  28. for future in concurrent.futures.as_completed(futures):
  29. print(future.result())
  30. print(time.time()-s2)
  31. # 进程池执行CPU密集型任务
  32. s3=time.time()
  33. with concurrent.futures.ProcessPoolExecutor(max_workers=5) as executor:
  34. futures=[executor.submit(add_item,item) for item in number_list]
  35. for future in concurrent.futures.as_completed(futures):
  36. print(future.result())
  37. print(time.time()-s3)

因为是计算密集型任务,多进程还是比多线程要快不少的,多线程适用于I/O密集型任务

最后我把concurrent文件夹压缩上传到了网盘里面,附上链接

https://kantlee.lanzous.com/ibvM6la55md

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/995240
推荐阅读
相关标签
  

闽ICP备14008679号