首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多进程调度程序中使用dask时Loguru错误

在多进程调度程序中使用dask时Loguru错误
EN

Stack Overflow用户
提问于 2022-09-14 04:43:16
回答 1查看 80关注 0票数 1

在尝试使用启用了RuntimeError的记录器处理程序从dask.delayed函数进行日志记录时,我将获得一个enqueue

下面是一个最小可重现性的例子

代码语言:javascript
复制
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")

它会产生以下错误:

代码语言:javascript
复制
RuntimeError: SimpleQueue objects should only be shared between processes through inheritance
EN

回答 1

Stack Overflow用户

发布于 2022-09-14 04:43:16

解决办法很简单。从delayed函数中导入记录器:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73711615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档