最简单的方法可能是覆盖
sys.stdout。从多处理手册中稍微修改一个示例:
from multiprocessing import Processimport osimport sysdef 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', nameif __name__ == '__main__': p = Process(target=f, args=('bob',)) p.start() q = Process(target=f, args=('fred',)) q.start() p.join() q.join()并运行它:
$ lsm.py$ python m.py$ ls27493.out 27494.out m.py$ cat 27493.out function fmodule name: __main__parent process: 27492process id: 27493hello bob$ cat 27494.out function fmodule name: __main__parent process: 27492process id: 27494hello fred



