簡體   English   中英

Python:為長時間運行的后台進程生成或線程?

[英]Python: spawn or thread for long running background process?

我打算用Python進行長時間運行的后台進程,但我仍然不確定是使用os.spawnle還是使用線程。 我只讀過它,因此我對spawn或thread沒有多少經驗。 有什么經驗法則何時使用?

謝謝堆

請務必考慮Global Interpreter Lock 如果長時間運行的進程是CPU密集型的,那么您應該將其作為一個獨立的進程。 另一方面,如果它會花費大量的時間來阻止,那么GIL並不是那么大的交易,你應該把它變成一個線程。

此外,如果您不需要os.spawnle提供的特定os.spawnle ,請考慮使用標准庫中的多處理包。 它提供了類似於線程包的界面,並且比手動生成和跟蹤過程更容易使用。

明顯的區別是os.spawnle用於啟動另一個運行不同程序的進程,而一個線程將執行代碼,該代碼是同一程序的一部分。 事實上,如果你的后台進程是已經存在的其他程序,那么os.spawnle (或其他一些創建單獨進程的方法)是你唯一的選擇; 程序中的兩個線程必須運行相同的程序。

如果您想知道是否應該將自己的代碼構造為作為單獨的進程或單獨的線程運行,那么請查看一些像這樣進程對線程問題,以確定哪個更適合您嘗試執行的操作。 特別是,考慮進程/線程需要共享哪些資源,它們將彼此通信的內容,以及每個需要的強大程度 - 例如,崩潰的線程將使其余的進程失效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM