Cara Mengurangkan Saiz Penampan untuk sys.stdin
Apabila melaksanakan arahan:
<code class="bash">memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log</code>
ia diperhatikan bahawa memtracer.py tidak mula menerima input sehingga memkeywatchYMD.log melebihi saiz 15-18K. Untuk menangani perkara ini, terdapat dua pendekatan:
Menggunakan bendera tidak buffer (-u)
Python menyediakan bendera tidak buffer -u yang mengalih keluar penimbalan daripada stdin/stdout. Dengan memanggil Python dengan bendera ini:
<code class="bash">python -u ~/bin/memtracer.py</code>
anda boleh menghapuskan penimbalan sepenuhnya untuk stdin dan stdout.
Mencipta objek fail baharu dengan penimbalan yang berbeza
Anda juga boleh mencipta objek fail baharu dengan deskriptor fail asas yang sama seperti input standard tetapi dengan saiz penimbal yang lebih kecil. Ini boleh dicapai menggunakan os.fdopen:
<code class="python">import os import sys # Create a new file object with a buffer size of 100 bytes newin = os.fdopen(sys.stdin.fileno(), 'r', 100) # Assign the new file object to standard input sys.stdin = newin</code>
Kod ini sepatutnya membenarkan anda membaca daripada input standard dengan saiz penimbal hanya 100 bait, menghasilkan masa tindak balas yang lebih pantas. Ambil perhatian bahawa pendekatan ini mungkin mempunyai had khusus platform, jadi ujian menyeluruh disyorkan.
Atas ialah kandungan terperinci Bagaimana untuk Mengurangkan Saiz Penampan untuk sys.stdin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!