💻 源码
import time
import asyncio
#并行处理的几种方式
#多进程,消耗更多资源(独立内存空间,文件描述符)(几十个上百个),
# 切换成本高(整个进程上下文,内存空间),
# 通讯成本高(管道,队列),安全性高

#多线程,消耗较少资源(共享内存空间)(几千个),
# 切换成本低(只需保存少量寄存器内容)(内核态,微秒级),
# 通讯成本低(共享内存),安全性较低

#协程,资源消耗极少(极少量内存)(几十万个),
# 切换成本低(只需切换寄存器内容)(用户态,纳秒级),
# 通讯成本低(共享内存,无需内核介入),安全性较高

#普通任务
def do_some_thing(i):
    print("开始执行任务:"+str(i))
    time.sleep(5)
    print("已经完成任务" + str(i))

#协程任务
async def do_some_thing_asynic(i):
    print("开始执行任务:"+str(i))
    await asyncio.sleep(5)
    print("已经完成任务" + str(i))

#多进程
from multiprocessing import Process
def test_multi_process():
    for i in range(10):
        t = Process(target=do_some_thing, args=(i,))
        t.start()


#多线程
import threading
def test_multi_thread():
    for i in range(10):
        t = threading.Thread(target=do_some_thing, args=(i,))
        t.start()

#协程
async def test_asyncio():
    tasks = []
    for i in range(10):
        tasks.append(do_some_thing_asynic(i))
    await asyncio.gather(*tasks)


if __name__ == '__main__':
    #test_multi_process()
    #test_multi_thread()
    asyncio.run(test_asyncio())