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
DDDasal
2024-11-12 11:31:02577semak imbas

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
  • 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

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
  • Gunakan modul fcntl untuk memanipulasi deskriptor fail:

    import fcntl
    
    stdout_fileno = sys.stdout.fileno()
    fcntl.fcntl(stdout_fileno, fcntl.F_SETFL, os.O_NONBLOCK)
  • 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:
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