在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()函数,我们可以控制线程的执行时间,从而实现线程间的同步。
