我正在使用Python 2.7。我有一個多線程程序,其中線程使用subprocess
模塊啓動命令。進程在系統上運行並偶爾向線程報告數據。大多數工作都是在進程中完成的 - 例如,線程只是從進程獲取信息並將它們寫入文件。Python中使用子進程和線程的效率
據我所知,有關於使用多線程與Python的限制。但在這種情況下,我預計所有繁重的工作都將由系統(Linux)完成,因爲所啓動的子進程正在執行CPU密集型工作。所以線程不必承受任何負載,因此不應該成爲瓶頸。
是我使用線程和子流程的理解一起在Python準確嗎?我認爲我理解的基礎部分是這些不同的子進程可以在不同的內核上運行,因此即使線程綁定到一個內核,進程也可以高效運行,線程可以在它們變得可用時從它們收集信息。
是的,你是對的。 Python的GIL只允許一次運行一個線程,但該規則僅適用於python進程 - 所有子進程都是獨立運行的。由於python線程大多隻是在等待來自子進程的數據,所以它們不會相互干擾。 – tdelaney