繁体   English   中英

将 dask 与多处理调度程序一起使用时出现 Loguru 错误

[英]Loguru error when using dask with a multiprocessing scheduler

尝试使用启用了enqueue的记录器处理程序从dask.delayed function 记录时,我收到了RuntimeError

这是一个最小的可重现示例

import sys, dask
from loguru import logger

logger.add(sys.stderr, enqueue=True)

@dask.delayed
def log():
    logger.info("Logging!")

dask.compute(*[log() for i in range(10)], scheduler="processes")

这会产生以下错误:

RuntimeError: SimpleQueue objects should only be shared between processes through inheritance

解决方案很简单。 delayed的 function 中导入记录器:

In [1]: import sys, dask
   ...: from loguru import logger
   ...: 
   ...: logger.add(sys.stderr, enqueue=True)
   ...: 
   ...: @dask.delayed
   ...: def log():
   ...:     from loguru import logger
   ...:     logger.info("Logging!")
   ...: 
   ...: dask.compute(*[log() for i in range(10)], scheduler="processes")
2022-09-13 21:42:36.001 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.001 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.001 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.001 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.002 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.002 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.004 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.004 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.004 | INFO     | __main__:log:9 - Logging!
2022-09-13 21:42:36.004 | INFO     | __main__:log:9 - Logging!
Out[1]: (None, None, None, None, None, None, None, None, None, None)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM