根据主题中的错误,修复方法是什么?
环境:
- Python 3.9 或 3.10
- Windows 10 x64
使用时出现错误joblib https://joblib.readthedocs.io/en/latest/对于并行处理:
result_chunks = joblib.Parallel(n_jobs=njobs)(joblib.delayed(f_chunk)(i) for i in n_chunks)
问题是超时时间太短。这是当有大量数据要传递给子进程并且内部超时时引起的。这个警告是良性的,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-04-03
无论超时如何,如果n_jobs
如此之高以至于总 CPU 使用率接近 100%,例如95%。修复方法是减少 njobs,从而降低总 CPU 使用率,例如至 85%。
更新2022-04-03
我在使用时也观察到这种情况发生Polars https://www.pola.rs/在每个作业中,无论超时和总 CPU 使用情况如何。当我切换回 Pandas 时,似乎没有发生这种情况。这可能是因为 Polars 效率更高并且使用更多 CPU,或者(如错误所述)由于内存泄漏(这不太可能)。
更新2023-02-20
Joblib v1.2.0于2022年11月16日发布。根据 @yairchu 的回答,这个新版本可能解决了这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)