不同的并发范式包括多线程、协程、异步和并行等。下面给出几种范式的代码示例,以帮助理解它们之间的区别。
多线程示例:
import threading
def print_numbers():
for i in range(5):
print(threading.current_thread().name, i)
t1 = threading.Thread(target=print_numbers, name='Thread 1')
t2 = threading.Thread(target=print_numbers, name='Thread 2')
t1.start()
t2.start()
t1.join()
t2.join()
协程示例:
def printing():
for i in range(5):
print('Coroutine', i)
yield
c = printing()
next(c)
next(c)
next(c)
next(c)
next(c)
异步示例:
import asyncio
async def print_numbers():
for i in range(5):
print(i)
await asyncio.sleep(1)
async def main():
await asyncio.gather(print_numbers(), print_numbers())
asyncio.run(main())
并行示例:
from concurrent.futures import ProcessPoolExecutor, as_completed
def print_numbers(i):
print(i)
with ProcessPoolExecutor() as executor:
futures = [executor.submit(print_numbers, i) for i in range(5)]
for future in as_completed(futures):
pass
上一篇:不同的笔记本输出