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

Bagaimana untuk Mengurangkan Saiz Penampan untuk sys.stdin?

Linda Hamilton
Lepaskan: 2024-10-21 10:38:29
asal
757 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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