Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengurangkan Saiz Penampan untuk sys.stdin?

Bagaimana untuk Mengurangkan Saiz Penampan untuk sys.stdin?

Linda Hamilton
Linda Hamiltonasal
2024-10-21 10:38:29606semak imbas

How to Reduce Buffer Size for sys.stdin?

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!

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