Jor*_*kie 6 python logging multithreading python-multithreading python-3.x
我像这样初始化我的记录器main.py:
logging.basicConfig(level=logging.DEBUG, format='%(process)d - %(name)s - %(levelname)s - %(message)s')
Run Code Online (Sandbox Code Playgroud)
然后在顶部的每个模块中我有:
logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
当我在多个线程中使用记录器时,显示的进程 ID 是相同的(父 ID),如果包含的话,线程 ID 是不同的。但是,当我top在 Linux 中使用命令行工具时,我看到每个线程有不同的 PID。
当子进程使用记录器时,如何显示子进程的 PID?我需要缩小问题发生的范围,但仅仅知道模块名称是不够的。
例如,当我让主线程生成另一个线程时,顶部显示这两个条目:
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
Run Code Online (Sandbox Code Playgroud)
但日志只显示 PID 9686,尽管 logger.info 在不同的线程中使用。
我正在使用多处理队列和 threading.Thread 模块
import logging
import threading
from multiprocessing import Queue
Run Code Online (Sandbox Code Playgroud)