這篇文章帶給大家的內容是Python線程下事件的用法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
事件用於在執行緒之間通訊。一個線程發送【事件】訊號,一個或多個其他線程等待它。
Event實例管理一個內部標誌,可以使用set()方法將它置為True,或使用clear()方法將它重設為False。 wait()方法將會阻塞,直到標誌為True。
e=Event() 创建新的Event实例,并将内部标志设置为False。
e.is_set():只有当内部标志设为True时才返回True e.set():将内部标志设置为True。等待它变为True的所有线程都讲被唤醒。 e.clear():将内部标志重置为False。 e.wait(timeout):阻塞直到内部标志为True。如果调用时内部标志为True,此方法将立即返回。 否则,它将阻塞,直到另一个线程调用set()方法将标志设置为True,或者出现可选的超时时。
evt=Event() def producer(): while True: #生产项 ... evt.signal() def consumer(): while True: #等待一个项 evt.wait() #消费项 ... #清除事件并再次等待 evt.clear()
應該盡量避免上面程式碼,因為這段程式碼不可靠,因為在evt.wait() 與evt.clear()操作之間,生產者可能生產了一個新項。但是,透過清楚事件,在生產者創建一個新項目之前,消費者可能看不到這個新項目。最好的情況是:程序將經過一段很短的停滯,對項的處理被莫名其妙的延遲。最壞的情況是,由於事件訊號遺失,整個程式將會掛起。要解決這類問題,最好使用條件變數。
相關推薦:
#詳解python多執行緒、鎖、event事件機制的簡單使用
以上是Python執行緒下事件用法的簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!