📜  如何在 python 中等待(1)

📅  最后修改于: 2023-12-03 15:38:24.157000             🧑  作者: Mango

如何在 Python 中等待

Python 中等待是一种重要的编程模式,特别是在需要等待耗时的操作或者某个条件满足时再去执行某些操作的场景中。本文将介绍 Python 中几种常用的等待方法。

time.sleep() 方法

time.sleep(seconds) 方法可以使当前线程暂停一段时间,单位为秒。它接受一个浮点数作为参数,表示等待的秒数。

import time

print("开始执行")
time.sleep(1)  # 等待 1 秒
print("1 秒后执行")

输出结果:

开始执行
1 秒后执行
threading.Event() 方法

threading.Event() 方法是一个线程同步的对象,用于在多个线程之间传递信号。它有两个方法:

  • wait(timeout=None) 方法会阻塞当前线程,直到信号被设置了。timeout 参数可以设置等待的最长时间,单位为秒。
  • set() 方法设置信号为真。
  • clear() 方法设置信号为假。

下面是一个使用 threading.Event() 方法的例子:

import threading

event = threading.Event()

def worker():
    print("开始执行 worker")
    event.wait()
    print("worker 执行完成")

t = threading.Thread(target=worker)
t.start()

print("Main 线程等待")
event.set()
t.join()
print("Main 线程执行完成")

输出结果:

开始执行 worker
Main 线程等待
worker 执行完成
Main 线程执行完成

在上面的例子中,工作线程会等待信号,而主线程会在启动工作线程后继续执行,然后等待一段时间。当主线程调用 event.set() 方法时,工作线程就可以继续执行了。

asyncio.sleep() 方法

asyncio.sleep(seconds, *, loop=None) 方法是 asyncio 模块中的等待方法,它是协程函数(coroutine function),需要在协程中使用。它接受一个浮点数作为参数,表示等待的秒数。

import asyncio

async def main():
    print("开始执行")
    await asyncio.sleep(1)  # 等待 1 秒
    print("1 秒后执行")

asyncio.run(main())

输出结果:

开始执行
1 秒后执行

在上面的例子中,使用 asyncio.sleep() 方法等待 1 秒后再执行后续代码。

Conclusion

本文介绍了 Python 中几种常用的等待方法:time.sleep() 方法、threading.Event() 方法和 asyncio.sleep() 方法。你可以根据自己的需要选择适用的方法。