Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencapai Output Masa Nyata daripada Subproses dalam Python?

Bagaimana untuk Mencapai Output Masa Nyata daripada Subproses dalam Python?

Barbara Streisand
Lepaskan: 2024-11-14 16:17:02
asal
484 orang telah melayarinya

How to Achieve Real-Time Output from Subprocess in Python?

Output Masa Nyata dengan Subproses

Dalam percubaan untuk mencipta skrip pembalut dengan penunjuk kemajuan, anda menghadapi cabaran di mana output daripada pembalut program telah ditimbal walaupun menggunakan subproses.Popen dengan stdout=PIPE. Seperti yang anda dapati, menetapkan bufsize kepada 1 atau 0 mahupun menggunakan gelung output tidak menyelesaikan isu.

Penyelesaian: Menggunakan readline

Nasib baik, kami terjumpa penyelesaian: menggunakan kaedah garis baca paip stdout. Berbeza dengan kaedah gelung for yang anda gunakan pada mulanya, yang menampan secara agresif, manakala gelung True dipertingkatkan dengan garis baca mempamerkan gelagat yang diingini.


sementara True:
line = p.stdout. readline()
jika bukan baris: putus
...

Isu Asas

Isu ini berasal daripada pepijat yang diketahui dalam Python, dijejaki sebagai isu 3907. Punca khusus penimbalan anomali tidak difahami dengan baik.

Kesimpulan

Dengan memanfaatkan kaedah garis baca, anda boleh mencapai output masa nyata daripada program yang dilancarkan melalui subproses tanpa menggunakan teknik lapuk atau berpotensi tidak selamat seperti exec*. Penyelesaian ini kekal berkesan dalam versi Python melebihi 3.x, memastikan keserasian ke hadapan.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Output Masa Nyata daripada Subproses 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