Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh melaksanakan berbilang arahan Bash secara serentak dalam Python?

Bagaimanakah saya boleh melaksanakan berbilang arahan Bash secara serentak dalam Python?

DDD
DDDasal
2024-10-26 04:01:27237semak imbas

How can I execute multiple Bash commands concurrently in 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!

Kenyataan:
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