ハードウェアの一部をポーリングしているスレッドがあります。
while not hardware_is_ready():
pass
process_data_from_hardware()
しかし、やるべきことがあるかもしれない他のスレッド(そしてプロセス!)があります。もしそうなら、私は他のすべての命令でハードウェアをチェックするCPUを焼き尽くしたくありません。スレッドを扱ってからしばらく経ちましたが、Pythonではありませんでしたが、ほとんどのスレッドライブラリにはyield
、スレッドがスケジューラに「他のスレッドにチャンスを与える」ように指示できる関数などがあると思います。
while not hardware_is_ready():
threading.yield() # This function doesn't exist.
process_data_from_hardware()
しかし、スレッドのドキュメントでこのようなものへの参照を見つけることができません。Pythonにはyield
ステートメントがありますが、それはまったく別のものであると確信しています(ジェネレーターを使用するため)。
ここで行う正しいことは何ですか?