当前位置: 首页 > 面试题库 >

日志输出multiprocessing.Process

陆寒
2023-03-14
问题内容

在python中使用multiprocessing.Process类时,是否有办法记录给定Process的stdout输出?


问题答案:

最简单的方法可能是覆盖sys.stdout。从多处理手册中稍微修改一个示例:

from multiprocessing import Process
import os
import sys

def info(title):
    print title
    print 'module name:', __name__
    print 'parent process:', os.getppid()
    print 'process id:', os.getpid()

def f(name):
    sys.stdout = open(str(os.getpid()) + ".out", "w")
    info('function f')
    print 'hello', name

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    q = Process(target=f, args=('fred',))
    q.start()
    p.join()
    q.join()

并运行它:

$ ls
m.py
$ python m.py
$ ls
27493.out  27494.out  m.py
$ cat 27493.out 
function f
module name: __main__
parent process: 27492
process id: 27493
hello bob
$ cat 27494.out 
function f
module name: __main__
parent process: 27492
process id: 27494
hello fred


 类似资料:
  • 你如何测试和调试你的代码呢?Lua 的两个主力作者是这样回复的: Luiz Henrique de Figueiredo:我主要是一块一块的构建,分块测试。我很少使用调试器。即使用调试器,也只是调试 C 代码。我从不用调试器调试 Lua 代码。对于 Lua 来说,在适当的位置放几条打印语句通常就可以胜任了。 Roberto Ierusalimschy:我差不多也是这样。当我使用调试器时,通常只是用

  • Blade使用了 slf4j-api 作为日志接口,为了方便起见,默认内置了日志实现, 包含按日期进行文件归档等操作,一个小型应用无需配置日志组件。 maven的坐标名为 blade-log,源码在 这里 默认的日志级别是 INFO,你可以修改它。使用日志和往常一样: public class LogExample { private static final org.slf4j.Logg

  • 有时,在你的游戏正在运行的时候,为了了解程序的运行过程或是为了查找一个 BUG,你想看到一些运行时信息,可以! 这个需求引擎已经考虑到了,使用 log() 可以把信息输出到控制台,这样使用: // a simple string log("This would be outputted to the console"); // a string and a variable string s =

  • 主要内容:Log4j Appender Properties配置Log4j 提供 Appender 对象,主要负责将日志消息打印到不同的目的地,例如控制台、文件、NT 事件日志、Swing 组件、JMS、远程 UNIX 系统日志守护进程、Socket套接字等。 每个 Appender 对象都有与其相关的不同属性,这些属性指定了该对象的行为。 属性 描述 layout Appender 使用 Layout 对象和与它们关联的转换模式来格式化日志信息。 targe

  • 主要内容:Log4j Layout类型,Log4j Layout方法Apache Log4j 支持各种Layout对象,每个对象都可以根据各种布局格式化日志数据。我们还可以创建一个 Layout 对象,以特定于应用程序的方式格式化日志数据。 所有 Layout 对象都从Appender对象接收一个LoggingEvent对象。然后 Layout 对象从 LoggingEvent 中检索消息参数并应用适当的 ObjectRenderer 来获取消息的字符串表示。 L

  • 我正在使用PyCharm在Mac OS X中开发一个GAE应用程序。有没有办法在PyCharm的运行控制台中显示颜色? 我设置了一个处理程序以ansi格式输出颜色。然后,我添加了处理程序: 但是颜色是一样的。 编辑: JetBrains问题跟踪器的响应:更改sys代码段的第55行。从标准到系统。斯特杜特。stderr流总是用红色着色,而stdout则不是。 现在颜色正确显示。