Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python记录器PID在顶部不同_Python_Python 3.x_Multithreading_Logging_Python Multithreading - Fatal编程技术网

Python记录器PID在顶部不同

Python记录器PID在顶部不同,python,python-3.x,multithreading,logging,python-multithreading,Python,Python 3.x,Multithreading,Logging,Python Multithreading,我在main.py中初始化记录器,如下所示: logging.basicConfig(level=logging.DEBUG, format='%(process)d - %(name)s - %(levelname)s - %(message)s') 在顶部的每个模块中,我有: logger = logging.getLogger(__name__) 当我在多个线程中使用记录器时,显示的进程id相同(父id),如果包含线程id,则线程id不同。然而,当我在linux中使用top命令行工具时

我在
main.py
中初始化记录器,如下所示:

logging.basicConfig(level=logging.DEBUG, format='%(process)d - %(name)s - %(levelname)s - %(message)s')
在顶部的每个模块中,我有:

logger = logging.getLogger(__name__)
当我在多个线程中使用记录器时,显示的进程id相同(父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

好的,在上面,他们讨论了一个使用
ctypes
和Linux特定代码的解决方案。这是不可移植的,但可以用于调试。

您在
top
中看到的可能是python线程映射到的OS线程。您能在这里显示输出吗?@DroidX86 done:)您的脚本是否碰巧使用了多处理模块?或者您正在使用的某个库正在使用多处理模块?正在使用多处理队列和threading.Thread。我已经添加了精确的导入。你能试着打印流程树吗?检查
pstree
命令。那可能会有帮助