Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh melaksanakan berbilang arahan Bash secara serentak dalam Python?
Pemprosesan Selari Subproses Bash dalam Python
Menjalankan subproses secara berurutan boleh menghalang prestasi aplikasi anda. Untuk melaksanakan berbilang arahan bash secara serentak, anda boleh memanfaatkan modul penjalinan dan subproses dalam Python.
Menggunakan Subproses Secara Terus
Walaupun penjalinan mungkin kelihatan perlu untuk pemprosesan selari, ia tidak diperlukan. Anda boleh menggunakan fungsi subproses.Popen untuk melancarkan proses secara selari:
<code class="python">from subprocess import Popen commands = [ 'date; ls -l; sleep 1; date', 'date; sleep 5; date', 'date; df -h; sleep 3; date', 'date; hostname; sleep 2; date', 'date; uname -a; date', ] # Run commands in parallel processes = [Popen(cmd, shell=True) for cmd in commands] # Perform other tasks while processes run # Wait for completion for p in processes: p.wait()</code>
Menghadkan Subproses Serentak
Untuk mengehadkan bilangan proses serentak, pertimbangkan untuk menggunakan pelbagai pemprosesan Modul .dummy.Pool, yang mensimulasikan berbilang pemprosesan menggunakan benang:
<code class="python">from functools import partial from multiprocessing.dummy import Pool from subprocess import call pool = Pool(2) # Limit to two concurrent commands # Iterate over commands and return codes for i, returncode in enumerate(pool.imap(partial(call, shell=True), commands)): if returncode != 0: print("%d command failed: %d" % (i, returncode))</code>
Menghadkan Tanpa Kumpulan
Anda juga boleh mengehadkan konkurensi tanpa kumpulan benang:
<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)) # Start initial processes while running_processes: for i, process in enumerate(running_processes): if process.poll() is not None: # Process has finished running_processes[i] = next(processes, None) # Start new process if running_processes[i] is None: # No new processes del running_processes[i] break</code>
Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan berbilang arahan Bash secara serentak dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!