Untuk melaksanakan perintah shell kompleks yang melibatkan paip berbilang proses, modul subproses Python menyediakan kefungsian untuk mencipta dan mengurus proses. Mari kita terokai cara menggunakan subproses.Popen untuk tujuan ini.
Arahan shell yang disediakan:
echo "input data" | awk -f script.awk | sort > outfile.txt
menyalurkan keluaran echo "input data" ke dalam proses awk, yang outputnya kemudian disalurkan ke dalam proses isihan. Untuk mensimulasikan ini menggunakan subproses.Popen:
import subprocess p_awk = subprocess.Popen(["awk","-f","script.awk"], stdin=subprocess.PIPE, stdout=subprocess.PIPE) p_sort = subprocess.Popen(["sort"], stdin=p_awk.stdout, stdout=subprocess.PIPE) stdout_data = p_sort.communicate(b"input data\n")[0]
Dalam senario ini, arahan gema digantikan dengan tulis terus ke stdin p_awk dan stdout_data mengandungi output yang diisih.
Walaupun penyelesaian yang diterima mencapai paip matlamat, adalah disyorkan untuk mempertimbangkan pendekatan Python sahaja seperti yang digambarkan di bawah:
import subprocess awk_sort = subprocess.Popen("awk -f script.awk | sort > outfile.txt", stdin=subprocess.PIPE, shell=True) stdout_data = awk_sort.communicate(b"input data\n")[0]
Pendekatan ini mewakilkan paip ke shell, memudahkan kod subproses. Selain itu, menulis semula skrip awk dalam Python boleh menghapuskan awk sebagai pergantungan, menghasilkan kod yang lebih pantas dan lebih mudah.
Melalui paip berbilang proses memperkenalkan kerumitan dan potensi kesesakan. Dengan menghapuskan paip dan menggunakan Python untuk semua langkah pemprosesan, anda memperoleh faedah berikut:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyambung Berbilang Proses dengan Cekap dalam Python Menggunakan `subprocess.Popen` dan Bilakah Saya Harus Mengelakkan Paip?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!