我遇到了Python多處理包的問題。下面是一個簡單的示例代碼,說明我的問題。Python多處理,ValueError:關閉的文件上的I/O操作
import multiprocessing as mp
import time
def test_file(f):
f.write("Testing...\n")
print f.name
return None
if __name__ == "__main__":
f = open("test.txt", 'w')
proc = mp.Process(target=test_file, args=[f])
proc.start()
proc.join()
當我運行這個,我得到以下錯誤。
Process Process-1:
Traceback (most recent call last):
File "C:\Python27\lib\multiprocessing\process.py", line 258, in _bootstrap
self.run()
File "C:\Python27\lib\multiprocessing\process.py", line 114, in run
self.target(*self._args, **self._kwargs)
File "C:\Users\Ray\Google Drive\Programming\Python\tests\follow_test.py", line 24, in test_file
f.write("Testing...\n")
ValueError: I/O operation on closed file
Press any key to continue . . .
似乎在創建新進程的過程中文件句柄「失去」了。有人可以解釋發生了什麼事嗎?
如果你點擊左上角的Console圖標,你會發現菜單選項來選擇和複製文本。 *請*使用該功能將traceback *作爲文本*複製到您的帖子中。 – 2013-02-15 16:46:59
http://stackoverflow.com/questions/1075443/multiprocessing-share-objects-with-file-handle-attribute-between-processes ...你可能想把你的輸出轉儲到一個隊列中,當你所有的進程都是完成後,將輸出從隊列中彈出並通過主進程寫出來 – pyInTheSky 2013-02-15 17:04:15