我有幾個線程,每個線程寫輸出到標準輸出。但是我想將每個線程的輸出重定向到彼此獨立的單獨文件。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