我有一个正在轮询硬件的线程。
while not hardware_is_ready(): pass process_data_from_hardware()
但是可能还有其他线程(和进程!)需要处理。如果是这样,我不想消耗CPU检查其他所有指令的硬件。自从我处理线程以来已经有一段时间了,那时我还不是Python,但是我相信大多数线程库都有一个yield函数或某种允许线程告诉调度程序“给其他线程一个机会”的东西。
yield
while not hardware_is_ready(): threading.yield() # This function doesn't exist. process_data_from_hardware()
但是我在线程文档中找不到对此类内容的任何引用。Python确实有一条yield语句,但是我很确定这完全是另一件事(与生成器有关)。
在这里做什么正确的事?
time.sleep(0)足以控制产量-无需使用正epsilon。确实,time.sleep(0)MEANS“屈服于任何其他可能准备就绪的线程”。
time.sleep(0)