luc*_*one 19 python logging python-logging
在我的一个脚本中,我有类似的内容:
import logging
from joblib import Parallel, delayed
def f_A(x):
logging.info("f_A "+str(x))
def f_B():
logging.info("f_B")
res = Parallel(n_jobs=2, prefer="processes")(delayed(f_A)(x) for x in range(10))
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
f_B()
Run Code Online (Sandbox Code Playgroud)
我希望当我运行python script.py类似的东西时:
INFO:root:f_B
INFO:root:f_A
Run Code Online (Sandbox Code Playgroud)
显示在控制台中,而不是我看到:
INFO:root:f_B
Run Code Online (Sandbox Code Playgroud)
f_A但没有显示任何信息。
我怎样才能f_A——以及最终从那里调用的函数——显示在日志中?
我认为问题是由于默认日志记录级别为“调试”,并且主进程不共享将级别传播给子进程。如果将脚本稍微修改为:
INFO:root:f_B
INFO:root:f_A
Run Code Online (Sandbox Code Playgroud)
然后一切都会按预期进行。
小智 1
您是对的,该问题是由于日志记录级别未传播到子进程造成的。在您的原始脚本中,basicConfig仅在主进程中调用。当使用joblib.Parallelwithprefer="processes"选项时,子进程不会继承主进程的日志记录配置。
| 归档时间: |
|
| 查看次数: |
4665 次 |
| 最近记录: |