我不得不做大量的I/O綁定操作,即解析大文件並將其從一種格式轉換爲其他格式。最初我曾經連續做過,即一個接一個地解析。性能非常差(使用時間超過90秒)。所以我決定使用線程來提高性能。我爲每個文件創建了一個線程。 (4條)python線程和性能?
for file in file_list:
t=threading.Thread(target = self.convertfile,args = file)
t.start()
ts.append(t)
for t in ts:
t.join()
但是令我驚訝的是,沒有任何性能改善。現在也需要大約90多秒才能完成任務。由於這是I/O界限操作,我曾預計會提高性能。
感謝delty..But多處理模塊有它自己的問題。 1)我不得不重構我的代碼,因爲我不能使用實例方法.. 2)我有一個實例方法,它有很多文件處理程序..這些文件處理程序在子進程中被關閉是不可接受的。所以我需要再次打開它們。不幸的是,我沒有辦法知道它們,因爲它們是在實例化過程中傳遞的。 – kumar 2010-06-10 08:43:23
它不一定是在單獨的進程中執行的轉換函數本身。有什麼辦法可以在單獨的進程中執行實例化部分?例如。編寫一個函數,甚至是一個單獨的腳本來完成單個實例化和轉換;然後編寫一個使用多處理模塊的「主腳本」來運行這些功能。單獨的腳本可以使用[subprocess](http://docs.python.org/library/subprocess.html)模塊運行。如果有很多共享數據,那麼是的,這就是多處理複雜化的地方。但是該模塊中有更多的工具:) – detly 2010-06-10 08:54:29