线程池
使用`concurrent.futures.ThreadPoolExecutor`创建一个线程池,通过`submit`方法提交任务,并通过`result`方法获取任务结果。
from concurrent.futures import ThreadPoolExecutor
def my_function(arg1, arg2):
异步任务代码
pass
with ThreadPoolExecutor(max_workers=4) as pool:
future = pool.submit(my_function, arg1, arg2)
result = future.result()
事件循环
使用`asyncio`模块创建事件循环,通过`run`函数运行异步程序。
import asyncio
async def main():
await my_async_function()
asyncio.run(main())
协程和异步生成器
使用`async def`定义协程函数,通过`await`关键字等待异步操作的结果。
async def my_async_function():
异步任务代码
pass
async def main():
result = await my_async_function()
asyncio.run(main())
异步执行器
使用`asyncio.run()`函数,它会自动创建事件循环并运行异步程序。
import asyncio
async def main():
await my_async_function()
asyncio.run(main())
使用`asyncio.gather`并发执行多个任务
import asyncio
async def async_task1():
await asyncio.sleep(1)
print("Async task 1 completed")
async def async_task2():
await asyncio.sleep(2)
print("Async task 2 completed")
async def main():
await asyncio.gather(async_task1(), async_task2())
asyncio.run(main())
以上是Python中实现异步调用的几种常见方法。您可以根据具体需求选择合适的方式。需要注意的是,异步编程可以提高程序的并发性和响应性,但编程模型相对于同步编程来说更加复杂