如何在Python中不依賴執行緒實現真正的並行Bash進程執行?

Patricia Arquette
發布: 2024-10-27 05:40:03
原創
161 人瀏覽過

How to Achieve True Parallel Bash Process Execution in Python Without Relying on Threads?

如何使用 Python 的執行緒和子進程模組產生並行 Bash 進程?

原始問題:

如何使用Python的執行緒和子進程模組來建立並行bash進程?當依照 Stack Overflow 回應中所述啟動執行緒時,會發生連續執行而不是並行執行。

答案:

與最初的假設相反,執行緒對於並行 bash 子程序執行。以下技術提供了各種選項:

直接執行(無線程):

<code class="python">from subprocess import Popen

commands = ['date; ls -l; sleep 1; date', ...]
processes = [Popen(cmd, shell=True) for cmd in commands]</code>
登入後複製

使用帶有multiprocessing.dummy.Pool 的線程來限制並發指令:

<code class="python">from functools import partial
from multiprocessing.dummy import Pool
from subprocess import call

pool = Pool(2)
for i, returncode in enumerate(pool.imap(partial(call, shell=True), commands)):
    ...</code>
登入後複製

在沒有進程池的情況下限制並發子進程:

<code class="python">from subprocess import Popen
from itertools import islice

max_workers = 2
processes = (Popen(cmd, shell=True) for cmd in commands)
running_processes = list(islice(processes, max_workers))
while running_processes:
    ...</code>
登入後複製

Unix 系統注意事項:

在Unix 平台上,透過阻塞os.waitpid(-1, 0) 來等待任何子進程退出來避免繁忙循環。

以上是如何在Python中不依賴執行緒實現真正的並行Bash進程執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!