Python记录threadName和multiprocessing.Process

时间:2014-09-30 16:53:50

标签: python logging multiprocessing

我有一个程序,它使用multiprocessing.Process对象来分离程序的块。我正在使用以下格式化程序

传递配置的记录器
formatter = logging.Formatter( '[%(created)s] [%(threadName)s] %(message)s') 

我创建了类似于此

的过程
process = multiprocessing.Process(
            name='abc',
            target=target_function,
            args=(log)
            )

这将在主进程和子进程中记录消息,如下所示

[1412095772.77] [MainThread] Hello World from main process
[1412095772.77] [MainThread] Hello World from child process

我的理解是threadName应该使用上面的'abc'而不是MainThread。

有谁知道为什么它看起来好像不是吗?

1 个答案:

答案 0 :(得分:1)

Formatter使用其运行的线程的名称。在父进程和子进程中,活动线程为MainThread,因为每个进程正在运行单个线程。听起来你真的想要打印进程名称,而不是线程名称:

formatter = logging.Formatter( '[%(created)s] [%(processName)s] %(message)s')