GNU/Linux >> Belajar Linux >  >> Linux

Mengapa stdbuf tidak berpengaruh pada Python?

Secara default, print() Python fungsi mengarahkan keluarannya ke sys.stdout , yang dokumentasinya menentukan ini:

Saat interaktif, stdout dan stderr stream di-buffer baris. Jika tidak, stream di buffer seperti file teks biasa. Anda dapat mengganti nilai ini dengan -u opsi baris perintah.

Perhatikan baik-baik bahwa dokumen tersebut tidak memberikan ruang untuk pengaruh lingkungan umum, seperti stdbuf perintah, pada mode buffering sys.stdout :tidak buffer jika -u opsi digunakan (atau, dengan kata lain, jika variabel lingkungan PYTHONUNBUFFERED telah ditetapkan), jika tidak, buffer garis jika interaktif dan buffer blok jika non-interaktif.

Program dapat mengontrol bufferingnya sendiri, seperti dokumen stdbuf akui:

CATATAN:Jika PERINTAH menyesuaikan buffering aliran standarnya ('tee'does misalnya) maka itu akan menggantikan pengaturan terkait yang diubah oleh 'stdbuf'. Juga beberapa filter (seperti 'dd' dan 'cat' dll.) tidak menggunakan aliran untuk I/O, sehingga tidak terpengaruh oleh pengaturan 'stdbuf'.

Karena Python secara eksplisit menentukan detail buffering, masuk akal untuk berharap bahwa ia benar-benar mengelola bufferingnya secara afirmatif, sehingga memperdebatkan efek apa pun dari stdbuf .


Linux
  1. Mengapa pengguna mysql memiliki bash shell di /etc/passwd?

  2. Output Dari Ls Memiliki Baris Baru Tapi Ditampilkan Pada Satu Baris. Mengapa?

  3. Apa Yang Terjadi Dengan Keluaran Dari Proses Yang Telah Diabaikan Dan Kehilangan Terminalnya?

  1. Df Vs. Du:Mengapa Begitu Banyak Perbedaan??

  2. Linux – Suid Tidak Berpengaruh Pada Direktori Dengan Linux?

  3. Mengapa /dev/null Merupakan File? Mengapa Fungsinya Tidak Diimplementasikan Sebagai Program Sederhana?

  1. Mengapa Ada Output Ping Setelah Dihentikan?

  2. Mengapa initrd saya hanya memiliki satu direktori, yaitu 'kernel'?

  3. Mengapa mirip Linux Unix jika kernelnya monolitik?