aplay
標準入力を受け入れる速度がかなり遅いプログラムがあります。標準入力(たとえばパイプを介して)に書き込むプログラムは、書き込み中に多くをブロックする傾向があります。入力を待つ必要はありません(オーディオの中断が発生したため)。標準入力(パイプなど)は、作成中に多くをブロックする傾向があります。入力を提供するプログラムは非常に迅速に操作を実行できますが、時々途切れることがあり、入力の生成が中断されます。入力を待つ必要はありません(オーディオの中断が発生したため)。
stdinから多くのデータを読み込み、stdout書き込みが完了するまでRAMに保持できるプログラムはありますか?
Cでのみ5分で停止し、5分間停止しなかったPythonプログラムと同じです。
import threading
import sys
import queue
stdin=sys.stdin.detach().detach() # detach TextIOWrapper, then detach BufferedWriter for a raw input stream.
stdout=sys.stdout.detach()
q=queue.Queue()
def worker(q,stdout):
while True:
data=q.get()
if data is None:
return
stdout.write(data)
threading.Thread(target=worker, args=(q,stdout)).start()
data=stdin.read(8192)
while data:
q.put(data)
data=stdin.read(8192)
q.put(None)
おそらく、データが消えるのを待つのではなく、RAMに設定可能な量のデータを格納するのと同じ機能がありますか?入力読み出しを一時停止し、SIGUSR1とSIGUSR2が送信されたら再開できますか?
こんなのが必ず存在するんでしょう? Googleに何をすべきかわかりません。