RuntimeError: An attempt has been made to start a new process before the current process has finishe

博客讲述了在Windows系统运行Python代码时遇到因使用`multiprocessing.Pool(os.cpu_count())`导致的错误。作者发现该方法在Linux系统中能有效利用多核,但在Windows系统中不适用。尝试的解决方案包括将代码主体放入`if __name__ == 'main__':`中和设置`num_workers`为0,前者解决了报错但输出结果不明,后者因未找到`num_workers`位置未测试。最终,作者选择通过循环方式代替多进程,虽然牺牲了并行性,但结果正常且运行时间尚可接受。

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

在运行代码的时候出现了这么一个错误:
在这里插入图片描述在多方查找之后发现报错原因是代码中使用了pool = multiprocessing.Pool(os.cpu_count()),在linux系统中可以使用多个子进程加载数据,而在windows系统中不能,我的代码是在Windows系统下跑的,所以会报错。
解决方案:
网上的解决方案基本上都是加main函数或者把num_workers改为0:
1、把代码的主体放到if name=='main’中,继续多进程加载
2、将num_workers设置为0或者采用默认为0的设置default=0

第一种方法亲测不会报错,但是输出的结果我没太看懂
在这里插入图片描述
第二种方法我不知道这个num_workers在哪里,所以没有测试第二种方法。

我自己是采用了把并行改成循环的方式,用循环按顺序挨个跑线程。因为数据量不算大,所以用时还可以,不算长。输出的结果也比较正常。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值