Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencapai Pelaksanaan Proses Bash Selari Benar dalam Python Tanpa Bergantung pada Benang?
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>
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>
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>
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!