Apabila menjalankan memcached dengan corak arahan yang diberikan, ia mengambil masa yang agak lama untuk memtracer. skrip py untuk mula menerima input. Ini dikaitkan dengan saiz penimbal besar sys.stdin, yang tidak optimum untuk operasi yang diingini. Artikel ini meneroka dua kaedah untuk menangani isu ini, termasuk input/output tidak buffer dan menggunakan os.fdopen.
Python menyediakan pilihan yang mudah untuk mengalih keluar penimbalan daripada stdin/ stdout sepenuhnya menggunakan bendera -u. Ini boleh ditentukan apabila menjalankan arahan:
<code class="bash">memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log -u</code>
Sebagai alternatif, anda boleh mencipta objek fail baharu dengan deskriptor fail yang sama seperti yang sedia ada, tetapi dengan penimbalan yang diubah. Ini melibatkan penggunaan fungsi os.fdopen:
<code class="python">import os import sys newin = os.fdopen(sys.stdin.fileno(), 'r', 100)</code>
Ini mencipta objek fail baharu, newin, yang dibaca daripada deskriptor fail yang sama seperti input standard (sys.stdin), tetapi dengan saiz penimbal hanya 100 bait. Anda kemudiannya boleh menggunakan newin sebagai objek input standard anda.
Kedua-dua bendera -u dan os.fdopen menawarkan kaedah yang berkesan untuk mengurangkan penimbalan dalam sys.stdin. Walaupun bendera -u mengalih keluar penimbalan sepenuhnya, os.fdopen menyediakan lebih fleksibiliti dalam menetapkan saiz penimbal tersuai. Adalah penting untuk menguji pendekatan ini secara menyeluruh untuk memastikan keserasian dengan platform yang berbeza dan memenuhi keperluan prestasi tertentu.
Atas ialah kandungan terperinci Bagaimana untuk Mengurangkan Saiz Penampan sys.stdin untuk Pengendalian Input Dioptimumkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!