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

在Python中使用sleep()函数进行线程间的等待

发布时间:2024-01-01 01:44:03

在Python中,可以使用time模块的sleep()函数来实现线程间的等待。sleep()函数可以让线程暂停一段时间,单位是秒。

示例1:

import time

def func1():
    print("开始执行任务1...")
    time.sleep(2)  # 暂停2秒
    print("任务1执行完毕!")

def func2():
    print("开始执行任务2...")
    time.sleep(3)  # 暂停3秒
    print("任务2执行完毕!")

# 创建并启动两个线程
t1 = threading.Thread(target=func1)
t2 = threading.Thread(target=func2)
t1.start()
t2.start()

# 等待两个线程执行完毕
t1.join()
t2.join()

print("所有任务执行完毕!")

在上述例子中,我们定义了两个函数func1和func2,分别代表两个任务。在每个函数内部,调用了sleep()函数来模拟任务的执行。为了同时执行两个任务,我们创建了两个线程并启动,然后使用join()函数来等待两个线程执行完毕。

示例2:

import time
from concurrent.futures import ThreadPoolExecutor, as_completed

def func1():
    print("开始执行任务1...")
    time.sleep(2)  # 暂停2秒
    print("任务1执行完毕!")
    return "任务1结果"

def func2():
    print("开始执行任务2...")
    time.sleep(3)  # 暂停3秒
    print("任务2执行完毕!")
    return "任务2结果"

# 创建一个线程池
executor = ThreadPoolExecutor(max_workers=2)

# 提交任务到线程池
f1 = executor.submit(func1)
f2 = executor.submit(func2)

# 等待任务执行完毕并获取结果
results = []
for f in as_completed([f1, f2]):
    result = f.result()
    results.append(result)

# 打印结果
print("所有任务执行完毕!")
print("结果:", results)

在上述例子中,我们使用concurrent.futures模块中的ThreadPoolExecutor类来创建一个线程池,并使用submit()函数来提交任务到线程池。然后,我们使用as_completed()函数来获取任务执行的结果,并将结果存放在一个列表中。最后,打印所有任务执行完毕后的结果。

这是使用sleep()函数进行线程间的等待的两个示例,通过调用sleep()函数,我们可以控制线程的执行时间,从而实现线程间的同步。