我遇到下面的代碼以及在子進程中使用print
函數的任何代碼的問題。即使我使用sys.std[err|out].write('worker')
而不是print
,我也看不到任何打印報表。使用python多重處理模塊創建的子進程將不會打印
這是代碼(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
能否請你點我的解決方案嗎?提前致謝。
非常感謝Tamas,但這在我的情況下沒有工作... – John 2010-05-05 16:18:17
你在哪個平臺上?上面的作品適用於Mac OS X上的我;事實上,即使沒有刷新sys.stdout,它也能正常工作。 – 2010-05-05 17:37:29
Tamas,我正在使用的平臺是win32。 順便說一下,直到現在我試圖在IDLE內運行代碼。今天我試着從命令行運行它,使用這個語法: python.exe my_prog.py 它工作。 有人知道爲什麼嗎?如何通過在IDLE內運行程序來顯示打印輸出? – John 2010-05-06 08:12:34