原因是不能在 线程中创建子线程。
先检查在线程结束后 是否使用 pool.close() pool.join() 释放进程池。没有使用的话需要加上。
我的代码已经使用了,但依然会有问题,查阅资料,看到一个issues 和这个问题相关:
https://github.com/apache/airflow/issues/14896
原因是 multiprocessing 模块问题。
解决方案是:在代码中使用 billiard 模块替换 multiprocessing
billiard 模块 地址:https://pypi.org/project/billiard/
安装:
pip3 install billiard
使用:
#替换前:
from multiprocessing import Pool
#替换后:
from billiard import Pool
其他代码不需要改动,很神奇~很有效~
找了很久才找到解决方案,如果对你有用,请点个赞吧~
文章提到,在线程中创建子线程时遇到问题,即便使用了pool.close()和pool.join()释放进程池仍无法解决。问题根源在于multiprocessing模块。作者发现ApacheAirflow的一个issues指出这是multiprocessing的问题,并建议使用billiard模块替代。安装并替换模块后,问题得到解决,无需其他代码改动。这是一个有效的解决方案。
466

被折叠的 条评论
为什么被折叠?



