在python中使用wait()函数实现线程之间的通信和同步
发布时间:2024-01-02 15:42:55
在Python中,可以使用wait()函数实现线程之间的通信和同步。wait()函数可以让线程等待其他线程的完成或达到某个条件,以实现线程之间的同步。
下面是一个使用wait()函数实现线程通信和同步的例子:
import threading
def worker(event, data):
print("Worker thread started.")
# 线程等待事件的设置
event.wait()
print("Worker thread received data: ", data)
def main():
# 创建一个事件对象
event = threading.Event()
# 创建一个工作线程
t = threading.Thread(target=worker, args=(event, "Hello"))
# 启动工作线程
t.start()
print("Main thread started.")
# 主线程等待一段时间
input("Press Enter to continue...")
# 设置事件,通知工作线程可以开始运行
event.set()
# 等待工作线程完成
t.join()
print("Main thread finished.")
if __name__ == "__main__":
main()
在这个例子中,我们首先创建了一个Event对象,用于线程之间的通信和同步。然后,我们创建了一个工作线程worker,将事件对象和数据作为参数传递给该线程。在工作线程中,我们调用wait()函数来等待事件的设置。主线程中,我们首先输出一条消息,然后等待一段时间,以便我们有足够的时间来设置事件。在等待期间,线程会被阻塞。当主线程接收到输入后,设置事件对象,通知工作线程可以开始运行。最后,主线程调用join()函数,等待工作线程完成。
运行以上代码,可以看到输出结果为:
Worker thread started. Main thread started. Press Enter to continue... # 在这里按下回车键 Worker thread received data: Hello Main thread finished.
从输出结果可以看出,工作线程在收到事件设置后开始执行,并打印出了接收到的数据。主线程在设置事件前等待一段时间,然后设置事件,并等待工作线程完成后才结束。
在这个例子中,通过wait()函数实现了线程之间的通信和同步。主线程在设置事件前等待一段时间,确保工作线程被阻塞。一旦事件被设置,工作线程被唤醒并开始执行。这种方式可以确保线程之间的有序执行,并实现了线程之间的通信和同步。
