Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Membaca dan Memproses Subproses Output Baris demi Baris dengan Cekap dalam Python?

Bagaimana untuk Membaca dan Memproses Subproses Output Baris demi Baris dengan Cekap dalam Python?

Barbara Streisand
Lepaskan: 2024-12-14 16:38:11
asal
824 orang telah melayarinya

How to Efficiently Read and Process Subprocess Output Line by Line in Python?

Cara Membaca Subproses stdout Baris demi Baris

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()
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan