【发布时间】:2011-02-16 00:06:31
【问题描述】:
我对下面的代码以及在子进程中使用print 函数的任何代码有疑问。即使我使用sys.std[err|out].write('worker') 而不是print,我也看不到任何打印的报表。
这是代码(from the official python documentation):
from multiprocessing import Process
def f(name):
print 'hello', name
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
输出为空白。
注意:以下代码使用线程模块并打印输出:
import threading
def f(name):
print 'hello', name
if __name__ == '__main__':
p = threading.Thread(target=f, args=('bob',))
p.start()
p.join()
输出:hello bob
能否请您指出解决方案?提前致谢。
【问题讨论】:
-
Python 2.7.15 (Mac) 两个程序都输出
hello bob。这可能是特定于平台的。 -
你可以在运行python解释器时尝试将-u参数添加到它吗?它应该取消缓冲您的输出。 (类似于 python -u myscript.py)
标签: python printing multiprocessing