Python中实现异步和高并发,可以使用asyncio模块、多线程、多进程等方式。
1. asyncio模块
asyncio模块是Python自带的异步IO框架,可以用于实现异步和高并发。以下是使用asyncio模块实现异步和高并发的示例:
import asyncio
import time
async def sleep_task():
print('Before sleep')
await asyncio.sleep(5)
print('After sleep')
async def main():
tasks = []
for i in range(10):
tasks.append(asyncio.create_task(sleep_task()))
await asyncio.gather(*tasks)
if __name__ == '__main__':
start = time.time()
asyncio.run(main())
print(f'Time elapsed: {time.time() - start}')
以上代码中,我们使用asyncio.create_task()方法创建了10个睡眠任务,并使用asyncio.gather()方法等待这些任务的完成。由于使用了异步方式,所以应用程序不会阻塞,可以同时处理其他请求。
2. 多线程
Python中可以使用多线程的方式来实现高并发。以下是使用多线程实现高并发的示例:
from concurrent.futures import ThreadPoolExecutor
import time
executor = ThreadPoolExecutor(10)
def sleep_task():
print('Before sleep')
time.sleep(5)
print('After sleep')
if __name__ == '__main__':
start = time.time()
for i in range(10):
executor.submit(sleep_task)
print(f'Time elapsed: {time.time() - start}')
以上代码中,我们使用了ThreadPoolExecutor线程池来启动10个睡眠任务,并使用submit()方法将这些任务提交给线程池。由于使用了线程池,所以应用程序可以同时处理多个请求,提高了并发能力。
3. 多进程
Python中也可以使用多进程的方式来实现高并发。以下是使用多进程实现高并发的示例:
from multiprocessing import Pool
import time
def sleep_task():
print('Before sleep')
time.sleep(5)
print('After sleep')
if __name__ == '__main__':
start = time.time()
with Pool(10) as p:
p.map(sleep_task, range(10))
print(f'Time elapsed: {time.time() - start}')