如何選擇 CPU 來運行 python 腳本?

基爾基·科賈埃利

我想同時運行 2 個不同的程序。第一個是python腳本。另一個程序是一個模擬程​​序(Gazebo)。簡而言之,我想將命令從 python 腳本發送到 Gazebo 模擬。我已經知道 ROS 和多處理,但我的問題與這些無關。在 Gazebo 工作時,python 腳本的 fps 值下降。所以我想通過選擇一個沒有影響 Gazebo 的 CPU 來運行 python 腳本。我還想通過選擇另一個 CPU 內核來運行 Gazebo。我的請求與多處理不同,因為即使我沒有將 python 腳本連接到 Gazebo,fps 也在下降。例如,我正在啟動 python 腳本。之後,我從另一個終端啟動 Gazebo。這些都是獨立的作品。即使在這種情況下,它們也會相互影響。結果,即使我使用多進程,它們也會相互影響。我錯了嗎?我該怎麼辦這個問題。

編輯:我也可以問不同類型的問題:假設我們有 2 個不同的 python 腳本。兩個 python 腳本都使用多處理。我在兩個腳本中創建了 2 個進程。當我在不同的終端中運行這兩個文件時,總共會使用 4 個不同的 CPU 嗎?簡而言之,python 文件使用的進程與從不同終端運行的其他 python 代碼中的進程是不同的還是相同的?

亞倫

雖然在技術上可以將一個進程固定到一組特定的內核上(我確信在其他操作系統上也有類似的)。它極有可能無濟於事,因為操作系統已經非常擅長確定何時何地執行進程。如果您在運行這兩​​個腳本時看到速度變慢,那可能是各種各樣的事情,但我不僅會查看 CPU 使用情況,還會查看磁盤活動、總線利用率(例如,樹莓派的總線容量非常小),壞兩個程序之間的交互(等待而無所作為)等。

要回答你的第二個問題,我想我必須解決一個誤解:一個進程不僅僅是創建它的文件。單個文件通常是進程的入口點,但操作系統隨後會將該文件讀入內存,加載與之關聯的庫,然後開始執行。那時,您可以刪除該文件,該程序將繼續正常運行,直到它嘗試加載操作系統尚未預先加載的其他資源。如果您嘗試啟動同一可執行文件的第二個副本,操作系統將經歷相同的加載和執行過程,但它會從新的內存塊開始(進程獲得自己的私有內存空間)。為此,每個 python 進程實際上都以相同的可執行文件(windows 上的 python.exe)開始,獲得自己的進程 ID 和自己的內存:

在此處輸入圖片說明

然後,python 可執行文件碰巧通常會加載一個文本文件並對其進行處理 ( your_script.py),但這實際上與進程的管理方式關係不大。當你調用multiprocessing你的腳本時,python 將使用一些操作系統命令來啟動一個全新的進程,就像打開一個新的終端窗口一樣(儘管它通常不會得到它自己的實際 gui 窗口)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何安排從anaconda運行的python腳本?

Python InDesign 腳本:如何運行預檢?

如何從 Python 腳本運行 nohup 命令?

如何與始終運行的 python 腳本通信

Python 運行與我的腳本不同的腳本

LUA - 如何停止運行腳本

如何運行python腳本直到它結束而沒有錯誤?

如何通過命令啟動屏幕並運行python腳本

使用 nohup 依次運行多個 python 腳本

如何在線運行我的 powershell 腳本?

導入後如何運行腳本?

如何在 shell 腳本中運行 sacct 命令

如何“重置”在使用 Flask 應用程序數據庫的 Python 腳本中運行的 db.session?

Python 腳本未執行

如何為在 docker 容器內運行的 corda 節點運行遷移腳本?

在後台運行 Scheme 或 Racket 解釋器來運行腳本

如何同時執行 django runserver 和 python 腳本(在 cmd 中的一行)

從 VS 代碼在 Python IDLE 中運行 python 腳本

在數據工廠中使用 Azure Function APP 運行 Python 腳本

模塊未導入在啟動時運行 python 腳本

試圖運行我的 python 腳本沒有做任何事情

運行 Python/PySpark 腳本時出現環境變量錯誤

使用已導入的模塊/模塊運行 python 腳本

在命令行/批處理文件/python 腳本中運行 java 主類

如何在 bash 腳本中使用 switch case 語句來執行不同的操作?

加載第一個腳本後如何使腳本執行

如何在多個數據目錄上運行我的腳本

如何從使用 bash 腳本運行的 C 程序中獲取變量的值?

如何為多個變量多次運行腳本?