簡體   English   中英

同時運行多個 Python 腳本的性能

[英]Performance running multiple Python scripts simultaneously

這里是一個相當新的“程序員”,試圖了解當多個不相關的腳本同時運行時 Python 如何與 Windows 交互,例如從任務管理器或只是從 IDLE 手動啟動它們。 腳本只是進行 http 調用並將文件寫入磁盤,環境為 3.6。

解釋器是否能夠獨立地從操作系統(處理器/內存/磁盤)中提取資源,以便完成每個腳本的時間與它是唯一運行的腳本的時間大致相同(假設腳本累積無處可去)接近耗盡所有 CPU 或內存)? 如果是這樣,限制是什么(腳本數量等)。

請原諒術語上的錯誤。 請注意“程序員”上的引號。

Python 如何與 Windows 交互

Python 是一個可執行文件,一個程序。 當一個程序被執行時,一個新的進程被創建。

python myscript.py啟動一個新的python.exe進程,其中第一個參數是您的腳本。

當多個不相關的腳本同時運行時

它們是多個進程。

解釋器是否能夠獨立地從操作系統(處理器/內存/磁盤)中提取資源?

是的。 每個進程都可以根據自己的意願訪問 OS API,並在可能的范圍內進行。

有哪些限制?

最有可能的內存。 與任何其他進程可能遇到的限制相同。

這些問題很難回答,部分原因在於它們取決於:

  • 您的操作系統:您的操作系統可以在需要時安排和運行任務,而 Python 程序員通常無法控制這些任務。

  • 您的腳本實際在做什么:如果您的腳本都試圖寫入同一個驅動器,則它們的執行可能比沒有寫入任何設備時更頻繁地停止。 或者,如果只有一個腳本寫入驅動器,腳本可能會運行得更快,因為 CPU 可以讓一個腳本計算另一個腳本何時寫入。 (沒有基准測試很難說。)

  • 您使用的 CPU數量:中央處理單元的數量可以改進程序的並行處理——但也許不能。 如果您的程序不斷地從同一個磁盤讀寫,更多的 CPU 可能不是一個好處。

  • 你的 Python 版本:(我只是為了完整性而添加這個。)

最終,您要獲得有關此的任何真實信息的唯一方法是進行自己的基准測試——即便如此,您也應該記住,您找到的那些數字僅適用於您當前的設置。 也就是說,如果您轉到別處的另一台計算機,您可能會發現得到不同的結果。

如果您不熟悉 Python 的timeit模塊,我建議您查看它。 (我很確定它是一個標准模塊,所以您應該已經擁有它。)它將幫助您進行基准測試,並讓您為您的平台獲得一些明確的答案。

通過提出像您這樣的問題,您可能很快就會聽說 Python 的 GIL(全局解釋器鎖)。 它與Python線程有關,有人認為是福,也有人認為是禍。 無論哪種方式,此頁面:

https://realpython.com/python-gil/

對它何時可以正常工作以及何時可能無法正常工作有一個很好的高級解釋。

暫無
暫無

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

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