Python报错ModuleNotFoundError: No module named ‘concurrent‘

本文解决了Python3.7环境下concurrent.futures模块缺失的问题,通过手动复制文件夹到Python安装目录下解决问题,并展示了如何使用该模块进行多线程和多进程任务处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在测试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)

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

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

https://kantlee.lanzous.com/ibvM6la55md

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员班长

感谢您的一路相伴

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值