在 python 中使用 multiprocess 进行多线程或者多进程处理的时候,遇到了 gevent 问题:1
gevent.hub.LoopExit:('This operation would block forever....')
这个问题可以通过打上 monkey patch(猴子补丁)来规避。
在导入 multiprocess 库的文件头部加入以下代码:1
2
3from gevent import monkey
monkey.patch_all()
注意,这两行代码需要放置在文件导入库的最前面.
我遇到的场景下, 导致 LoopExit 的原因是 multiprocess 的job中远程网络请求超时导致的,如果相应的job任务中没有远程请求的话,即使不用 pathch,代码也是能够正常运行的。由于避免加上超时处理的复杂逻辑,就简单的使用monkey patch来解决这个问题。