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

使用Python中的SetEvent()函数实现多线程任务的同步控制

发布时间:2023-12-27 19:10:42

在Python中,可以使用Threading模块中的Event()类来实现线程任务的同步控制。Event对象可以用来设置线程间的同步点,其中的set()方法可以设置事件,而wait()方法则用于等待事件的发生。

下面是一个示例,演示了如何使用Event对象来实现多个线程的同步控制:

import threading

# 创建一个Event对象
event = threading.Event()

# 定义一个线程函数
def worker():
    print("Worker thread is waiting")
    # 等待事件的发生
    event.wait()
    print("Worker thread resumes execution")

# 创建多个线程
threads = []
for _ in range(5):
    t = threading.Thread(target=worker)
    threads.append(t)
    t.start()

# 主线程等待一段时间后设置事件
import time
time.sleep(5)
event.set()

# 等待所有线程完成
for t in threads:
    t.join()

print("All threads have finished execution")

在上面的代码中,首先创建了一个Event对象event。然后定义了一个worker()函数作为线程的入口函数,在其中使用event.wait()方法等待事件的发生。接下来,创建了5个线程,并将它们添加到一个列表中。然后,主线程暂停5秒钟,然后调用event.set()方法来设置事件,这将导致所有等待事件的线程恢复执行。最后,使用t.join()方法等待所有线程的完成。

在运行这段代码后,可以看到所有的worker线程都在等待事件的发生,接着主线程设置了事件后,所有的worker线程都恢复执行并打印了"Worker thread resumes execution"。最后,主线程打印"All threads have finished execution",表示所有的线程任务都已完成。

通过使用Event对象的set()和wait()方法,可以很方便地实现线程任务的同步控制。这对于需要在多个线程之间进行同步的应用场景非常有用,比如在一个线程等待另一个线程完成某项任务后再继续执行等。