Bagaimana untuk Mencapai Pelaksanaan Proses Bash Selari Benar dalam Python Tanpa Bergantung pada Benang?

Patricia Arquette
Lepaskan: 2024-10-27 05:40:03
asal
161 orang telah melayarinya

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

Bagaimana untuk Melahirkan Proses Bash Selari dengan Modul pemisahan dan subproses Python?

Soalan Asal:

Bagaimanakah saya boleh menggunakan modul threading dan subproses Python untuk mencipta proses bash selari? Pelaksanaan berturut-turut berlaku dan bukannya pelaksanaan selari apabila utas dimulakan seperti yang diterangkan dalam tindak balas Limpahan Tindanan ini.

Jawapan:

Bertentangan dengan andaian asal, utas tidak diperlukan untuk pelaksanaan subproses bash selari. Teknik berikut menyediakan pelbagai pilihan:

Pelaksanaan Terus (tanpa Benang):

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

commands = ['date; ls -l; sleep 1; date', ...]
processes = [Popen(cmd, shell=True) for cmd in commands]</code>
Salin selepas log masuk

Perintah Serentak Terhad Menggunakan Benang dengan 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>
Salin selepas log masuk

Hadkan Proses Anak Serentak Tanpa Kumpulan Proses:

<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>
Salin selepas log masuk

Nota untuk Sistem Unix:

Pada platform Unix, elakkan gelung sibuk dengan menyekat pada os.waitpid(-1, 0) untuk menunggu sebarang proses anak keluar.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pelaksanaan Proses Bash Selari Benar dalam Python Tanpa Bergantung pada Benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!