Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah output Python saya ditangguhkan, dan bagaimana saya boleh membuatnya muncul dalam masa nyata?

Mengapakah output Python saya ditangguhkan, dan bagaimana saya boleh membuatnya muncul dalam masa nyata?

DDD
Lepaskan: 2024-11-12 11:31:02
asal
632 orang telah melayarinya

Why is my Python output delayed, and how can I make it appear in real-time?

Memahami Output Terminal Tertunda dalam Python

Python secara lalai menampan output untuk meningkatkan prestasi dengan menghantar semuanya sekali gus dan bukannya secara individu ke program lain seperti terminal. Sekiranya tiada baris baharu, penyata cetakan biasanya ditimbal sebaris pada satu masa, mengakibatkan kelewatan dalam memaparkan teks yang dimaksudkan.

Mengatasi Masalah

Untuk Pernyataan Cetakan Tunggal:

  • Python 3.x: Gunakan parameter flush dalam fungsi cetakan untuk flush output secara eksplisit, seperti yang dilihat di bawah:
for _ in range(10):
    print('.', end=' ', flush=True)
    time.sleep(.2)  # or other time-consuming work
Salin selepas log masuk
  • Python 2.x: Gunakan kaedah .flush bagi strim sys.stdout untuk memaksa penghantaran output:
for _ in range(10):
    print '.',
    sys.stdout.flush()
    time.sleep(.2)  # or other time-consuming work
Salin selepas log masuk

Untuk Penyata Cetakan Berbilang:

Daripada mengepam setiap cetakan secara individu, anda boleh melumpuhkan penimbalan baris sepenuhnya. Berikut ialah beberapa penyelesaian yang berpotensi:

  • Tetapkan pembolehubah persekitaran PYTHONUNBUFFERED kepada Benar:

    export PYTHONUNBUFFERED=1
    Salin selepas log masuk
  • Gunakan modul fcntl untuk memanipulasi deskriptor fail:

    import fcntl
    
    stdout_fileno = sys.stdout.fileno()
    fcntl.fcntl(stdout_fileno, fcntl.F_SETFL, os.O_NONBLOCK)
    Salin selepas log masuk
  • Gunakan pihak ketiga perpustakaan seperti tqdm atau joblib untuk menyediakan bar kemajuan dengan kemas kini masa nyata.

Dengan melaksanakan teknik ini, anda boleh memastikan output dipaparkan serta-merta dalam terminal, memberikan pengalaman yang lebih bermaklumat dan interaktif semasa skrip pelaksanaan.

Atas ialah kandungan terperinci Mengapakah output Python saya ditangguhkan, dan bagaimana saya boleh membuatnya muncul dalam masa nyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan