我有一個輪詢一個硬件的線程。threading.Thread如何在Python中產生剩餘的量子?
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
語句,但我很肯定這是完全不同的東西(用於生成器)。
這裏要做的正確事情是什麼?
我不是專家,但我讀過一些關於GIL的內容。你能否給我一個暗示,特別是與這個問題有關? 我現在要用'time.sleep(epsilon)',但它有點不令人滿意,不是嗎?沒有我想睡的特定時間間隔。 – 2009-04-24 22:45:11
它是唯一的解決方案,如果你的硬件不能發送中斷。 – Unknown 2009-04-25 01:58:39