📅  最后修改于: 2023-12-03 14:46:42.521000             🧑  作者: Mango
在编写 Python 程序时,我们有时需要等待一些操作的完成,例如读取文件、网络请求等。为了避免程序在等待操作完成时出现“假死”现象,我们可以使用 Python 提供的等待机制。本文将为您介绍几种常用的等待方式。
time.sleep()
Python 内置的 time.sleep()
函数可以让程序等待一定的时间:
import time
print("Start")
time.sleep(3) # 等待3秒
print("End")
输出:
Start
(等待3秒)
End
time.sleep()
的缺点是需要手动设置等待的时间,可能会影响程序的性能。如果等待时间过短或过长,都会对程序的运行效率产生影响。
threading.Timer()
使用 threading.Timer()
函数可以在一定时间后自动执行指定的函数:
import threading
def callback():
print("Hello, World!")
t = threading.Timer(3, callback) # 等待3秒
t.start()
输出:
(等待3秒)
Hello, World!
threading.Timer()
的好处是可以避免等待时间过长或过短的情况,还可以在等待的同时进行其它操作。
asyncio.sleep()
使用 Python 的协程库 asyncio
可以实现异步等待:
import asyncio
async def main():
print("Start")
await asyncio.sleep(3) # 等待3秒
print("End")
asyncio.run(main())
输出:
Start
(等待3秒)
End
asyncio.sleep()
可以让程序在等待的同时执行其它协程,十分适合异步编程。
concurrent.futures
Python 提供的 concurrent.futures
模块可以实现多线程等待:
import concurrent.futures
def task():
print("Hello, World!")
return "Done"
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(task) for _ in range(3)]
for future in concurrent.futures.as_completed(futures):
print(future.result())
输出:
Hello, World!
Hello, World!
Hello, World!
Done
Done
Done
concurrent.futures
可以让程序并发执行多个任务,提高程序的效率。