我有几个线程,每个线程写输出到标准输出。但是我想将每个线程的输出重定向到彼此独立的单独文件。python:打印每个线程的输出到单独的文件
我的意思是这样的:
- 线程1写下了每一个打印,每一个异常和所有其他输出中成file1.log
- 线程2写入每个打印,每一个异常和所有其他输出中成file2.log
- 等等。
所以我在找的是为每个线程排他地设置标准输出。然而,设置stdout只能在全局范围内工作,意味着Thread1和Tread2将始终写入相同的已定义stdout。 我还没有发现如何做到这一点。 python日志记录不适用于此,因为我已经检查过了。
我该怎么做?
编辑:基于DBRA的答案我写了下面的小程序,演示记录:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from multiprocessing import Process
import sys
class SubRunner(object):
def print_something(self, name):
print name + ": print something"
class MainRunner(object):
def __init__(self, name):
self.sub_runner = SubRunner()
self.name = name
def runme(self,dummy):
sys.stdout = open('example_' + self.name + ".log", "w")
self.sub_runner.print_something(self.name)
#Main program
m1 = MainRunner("M1")
m2 = MainRunner("M2")
p1 = Process(target=m1.runme, args=('',))
p2 = Process(target=m2.runme, args=('',))
p1.start()
p2.start()
p1.join()
p2.join()
谢谢,这解决了我的问题。 – toom