簡體   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