Menyalurkan Pelbagai Proses dalam Python menggunakan Subproses.Popen
Apabila cuba menyambungkan berbilang proses melalui paip menggunakan subproses.Popen, tugas itu boleh dipermudahkan dengan mendelegasikan penciptaan paip kepada cangkerang. Pertimbangkan kod Python berikut:
awk_sort = subprocess.Popen("awk -f script.awk | sort > outfile.txt", stdin=subprocess.PIPE, shell=True) awk_sort.communicate(b"input data\n")
Dalam contoh ini, shell bertanggungjawab untuk menyambungkan awk dan menyusun proses dengan saluran paip. Ini menghapuskan keperluan untuk mengurus pelbagai subproses dan paip secara langsung.
Menghapuskan Keperluan untuk Alat Luaran
Namun, seperti yang dicadangkan oleh sesetengah pakar, selalunya berfaedah untuk mengelak daripada menggunakan alat luaran alat seperti awk. Menulis semula skrip dalam Python boleh meningkatkan prestasi dan menghapuskan kerumitan yang wujud dalam saluran paip. Contohnya:
import subprocess p = subprocess.Popen("sort", stdin=subprocess.PIPE, stdout=open("outfile.txt", "w")) p.communicate(b"input data\n")
Skrip asli Python ini mencapai fungsi yang sama tanpa memerlukan saluran paip atau arahan luaran. Dengan mempermudahkan kod, potensi ralat dan kekaburan dikurangkan.
Sebab Mengelakkan Pemipisan
Walaupun saluran paip boleh menawarkan faedah prestasi dalam senario tertentu, ia sering menambah yang tidak perlu kerumitan kepada kod. Berikut ialah beberapa sebab untuk mempertimbangkan untuk mengelakkan saluran paip:
Kesimpulan
Mewakilkan saluran paip kepada cangkerang boleh memudahkan kod dengan membenarkan cangkerang mengendalikan proses penciptaan paip. Walau bagaimanapun, adalah penting untuk mempertimbangkan dengan teliti sama ada alat luaran dan saluran paip diperlukan untuk tugas yang sedang dijalankan. Dalam kebanyakan kes, menghapuskan saluran paip dan alatan luaran boleh meningkatkan kesederhanaan dan prestasi kod.
Atas ialah kandungan terperinci Sekiranya saya Menggunakan Shell Pipelining atau Native Python untuk Operasi Berbilang Proses?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!