python-3.x 错误:进程_执行者.py:702:...在将某些作业交给执行器时,工作进程停止,这可能是由于工作进程超时时间太短造成的

iyzzxitl  于 2023-02-20  发布在  Python
关注(0)|答案(2)|浏览(106)

根据主题中的错误,修复方法是什么?
环境:

  • Python 3.9或3.10
  • windows 10 x64

使用joblib进行并行处理时出错:

result_chunks = joblib.Parallel(n_jobs=njobs)(joblib.delayed(f_chunk)(i) for i in n_chunks)
qyuhtwio

qyuhtwio1#

这个问题是超时时间太短。当有大量数据要传递给子进程时,它会在内部超时。这个警告是良性的,joblib会在内部恢复,结果(根据我的经验)是准确和完整的。
为了修复,增加超时,我使用这个:

# Increase timeout (tune this number to suit your use case).
timeout=99999
result_chunks = joblib.Parallel(n_jobs=njobs, timeout=timeout)(joblib.delayed(f_chunk)(i) for i in n_chunks)

或者,找出一种方法来减少必须序列化并发送到子进程的数据量。

更新日期:2022年4月3日

如果n_jobs非常高,导致CPU总使用率接近100%(例如95%),则无论是否超时,也会发生这种情况。修复方法是减少njobs,使CPU总使用率下降到85%。

更新日期:2022年4月3日

当我在每个作业中使用Polars时,无论超时和CPU总使用率如何,都会发生这种情况。当我切换回Pandas时,似乎没有发生这种情况。这可能是因为Polars更高效,使用更多的CPU,或者(如错误所述)由于内存泄漏(不太可能)。

jv4diomz

jv4diomz2#

joblib从1.1.0版升级到1.2.0版对我来说很管用!(timeout解决方案对我来说没有任何改变)

相关问题