欢迎访问宙启技术站
智能推送

在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()函数实现了线程之间的通信和同步。主线程在设置事件前等待一段时间,确保工作线程被阻塞。一旦事件被设置,工作线程被唤醒并开始执行。这种方式可以确保线程之间的有序执行,并实现了线程之间的通信和同步。