求助,请教个和Pool有关的定义函数的问题
主程序 if __name__ == '__main__': 中可以def定义函数吗?
代码如下:
'fun test'
from multiprocessing.pool import Pool
import time
if __name__ == '__main__':
def ppfun(id):
print('proc(%d) start' %id)
time.sleep(2)
print('proc(%d) end' %id)
return str(id) + 'done'
p = Pool(processes = 3)
results = []
for i in range(4):
results.append(p.apply_async(ppfun, args = (i,)))
p.close()
p.join()
for res in results:
print(type(res))
print(res.get())
print('process(es) all done')
print('FIN')
运行起来会报异常:
AtrributeError: Can't get atrribute 'ppfun' on <module '__mp_main__' from 'E:\\...\\....\\funtest.py'>

并且程序卡死
如果把ppfun的定义放在 if __name__ == '__main__':外面运行就OK。
尝试不涉及Pool的另外的代码,在 if __name__ == '__main__':中def定义函数运行正常。
请教下这是怎么回事?另外'__mp_main__'表示什么?
python版本3.4
相关推荐
解决windows下python3使用multiprocessing.Pool出现的问题
**交互式环境中定义的函数问题**在交互式环境中(如Jupyter Notebook、Spyder控制台等),函数通常是动态地添加到`__main__`模块中的。
Python multiprocess pool模块报错pickling error问题解决方法分析
"本文主要探讨了在Python编程中使用multiprocessing模块的pool子模块时遇到的PicklingError问题,特别是当尝试对类内的函数进行多线程处理时。文章提供了问题的原因分析和
阿里dubbo出错提示Thread pool is EXHAUSTED问题及解决方法
阿里dubbo出错提示Thread pool is EXHAUSTED问题及解决方法阿里dubbo出错提示Thread pool is EXHAUSTED是一个常见的错误提示,通常发生在dubbo服务端线程池资源耗尽的情况下
关于VS,Profile,iRules,Profile,Pool和SNAT解释
### F5核心组件详解:VS, Profile, iRules, Pool 和 SNAT#### 一、虚拟服务器 VS (Virtual Server)**定义与作用**- **定义**:VS 是指虚拟服务器
ceph创建pool
概述 一个ceph集群可以有多个pool,每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,比如Replica Size(副本数)、Placement Groups、CRUSH Rules、快照、所属者等。 正文 查看现有pool列表,删除默认的pool ceph osd lspools 删除默认pool rbd rados rmpool rbd rbd --yes-...


