6-7年前,我看到了一種在嚴格資源env上運行python的方法,只運行一次解釋器,同時允許幾個腳本同時使用它。相同的python解釋器實例同時運行多個腳本?
這個想法是bot保存解釋器啓動開銷並節省RAM。
有類似的東西存在嗎?
這個問題 Python: Execute multiple Scripts simultaneously from same Interpreter 沒有解決併發問題。至少答案是關於順序運行,但我需要同時:)
想法?
6-7年前,我看到了一種在嚴格資源env上運行python的方法,只運行一次解釋器,同時允許幾個腳本同時使用它。相同的python解釋器實例同時運行多個腳本?
這個想法是bot保存解釋器啓動開銷並節省RAM。
有類似的東西存在嗎?
這個問題 Python: Execute multiple Scripts simultaneously from same Interpreter 沒有解決併發問題。至少答案是關於順序運行,但我需要同時:)
想法?
是和否。 Python本身使用全局解釋器鎖(GIL),如果你關心,你可以閱讀很多關於它的內容。然而,長話短說,它確保解釋器基本上是單線程的。您可以在您的Python程序中創建(並運行)多個線程,但是如果他們使用Python解釋器,則一次只能有一個線程。但是,如果你有線程主要運行SciPy或NumPy(這是本機代碼不能被解釋)的代碼,那麼你可以同時運行幾個代碼。
但是,大多數操作系統都有用於進程內存頁的Copy On Write機制,這意味着(只要代碼未被修改)解釋器使用的大部分代碼將被共享,而無需任何額外的工作在你的部分(或口譯員)。 IOW,當你運行兩個或兩個以上的解釋器副本時,第二個和後續將共享大部分內存(至少對於可執行代碼),所以當你運行更多資源時,資源使用率不會上升(任何接近)實例。啓動時間也將大幅減少 - 操作系統必須創建一個將內存頁面映射到新進程的新頁面表,但不需要從磁盤或其他類似的頁面重新讀取這些頁面。
謝謝。我將不得不驗證那當然:) – 2011-05-09 07:50:31