2012-05-30 45 views
0

我有一個巨大的文件與數十萬行。我需要在每一行上運行相同的過程。我的計劃是製作多個線索來加速這個過程。每當我使用treading和Queue模塊之前我多線程。但是我不知道如何應用隊列。我真正需要做的是逐行讀取文件,因爲文件太大而無法完成整個工作。我以爲也許我可以用.put()一次添加一件東西到隊列中,然後立即將它傳遞給線程,但似乎如果我這樣做了線程可能會發生衝突。有什麼建議麼?線程與readline

+1

重讀文檔用於'threading'和'Queue'模塊。它們正是爲這種情況而設計的。我建議使用'multiprocessing'而不是'threading',因爲在同一進程中的多個線程之間進行分割時,任務運行速度可能不會更快。此外,這個任務是IO綁定而非處理器綁定的明顯可能性,在這種情況下,如何將任務分解爲所有讀數將在一個進程中發生並不重要。 –

+0

由於[GIL](http://wiki.python.org/moin/GlobalInterpreterLock),線程可能不會加速它,所以您可能要使用[multiprocessing](http://docs.python.org/) library/multiprocessing.html),而是專門查看'pool.map'。 – agf

+0

[演示多處理,線程,concurrent.futures的示例](http://stackoverflow.com/a/9874484/4279) – jfs

回答

0

每行有多少處理。

如果不是很多,那麼你可能會放慢速度與多個線程競爭設備文件?您可能希望事先拆分文件並將這些組件放在不同的設備上?然後,每個文件或每組文件啓動一個進程是一件簡單的事情。

我使用拆分,xargs的-P UNIX命令此