Dalam Python, menggunakan subproses untuk memanggil utiliti Linux yang menjana volum keluaran yang besar boleh menimbulkan cabaran jika anda mahu tangkap dan proses output secara berperingkat.
Dalam proses induk, baris for dalam pernyataan proc.stdout membaca keseluruhan input sebelum mengulanginya. Ini boleh menyebabkan output tidak muncul dalam aplikasi anda sehingga jumlah yang besar telah dijana.
Untuk menangani isu ini, gunakan proc.stdout.readline() sebaliknya:
import subprocess proc = subprocess.Popen(['python', 'fake_utility.py'], stdout=subprocess.PIPE) while True: line = proc.stdout.readline() if not line: break #the real code does filtering here print "test:", line.rstrip()
Ini penyelesaian membolehkan anda menapis dan mencetak setiap baris output apabila ia tersedia daripada subproses. Perlu diingat bahawa anda mungkin masih perlu mempertimbangkan gelagat penimbalan subproses.
Atas ialah kandungan terperinci Bagaimana untuk Membaca dan Memproses Subproses Output Baris demi Baris dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!