Python 顶部的记录器 PID 不同
Python logger PID different in top
我在 main.py
中初始化我的记录器,如下所示:
logging.basicConfig(level=logging.DEBUG, format='%(process)d - %(name)s - %(levelname)s - %(message)s')
然后在顶部的每个模块中我有:
logger = logging.getLogger(__name__)
当我在多个线程中使用记录器时,显示的进程ID 相同(父ID),如果包含线程ID 则不同。但是,当我在 linux 中使用 top
命令行工具时,我看到每个线程都有不同的 PID。
子进程使用记录器时如何显示子进程的PID?我需要缩小发生问题的范围,但我不能只知道模块名称。
例如,当我让主线程生成另一个线程时,top 显示这两个条目:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9686 jm354 20 0 528608 17584 9192 S 0.0 0.2 0:00.07 python
9690 jm354 20 0 528608 17584 9192 S 0.0 0.2 0:00.01 python
但日志仅显示 PID 9686,尽管 logger.info 被用于不同的线程。
我正在使用多处理队列和 threading.Thread 模块
import logging
import threading
from multiprocessing import Queue
嗯,在 here 之后,他们讨论了使用 ctypes
和 Linux 特定代码的解决方案。这不是可移植的,但可以用于调试。
我在 main.py
中初始化我的记录器,如下所示:
logging.basicConfig(level=logging.DEBUG, format='%(process)d - %(name)s - %(levelname)s - %(message)s')
然后在顶部的每个模块中我有:
logger = logging.getLogger(__name__)
当我在多个线程中使用记录器时,显示的进程ID 相同(父ID),如果包含线程ID 则不同。但是,当我在 linux 中使用 top
命令行工具时,我看到每个线程都有不同的 PID。
子进程使用记录器时如何显示子进程的PID?我需要缩小发生问题的范围,但我不能只知道模块名称。
例如,当我让主线程生成另一个线程时,top 显示这两个条目:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9686 jm354 20 0 528608 17584 9192 S 0.0 0.2 0:00.07 python
9690 jm354 20 0 528608 17584 9192 S 0.0 0.2 0:00.01 python
但日志仅显示 PID 9686,尽管 logger.info 被用于不同的线程。
我正在使用多处理队列和 threading.Thread 模块
import logging
import threading
from multiprocessing import Queue
嗯,在 here 之后,他们讨论了使用 ctypes
和 Linux 特定代码的解决方案。这不是可移植的,但可以用于调试。