python中怎么实现并发和异步编程 | 您所在的位置:网站首页 › 手动创建线程池 › python中怎么实现并发和异步编程 |
并发编程的概念
并发编程是指多个计算机程序同时执行,并且在同一时间共享CPU时间。通过这种方式可以实现更多地效率和优化。在python中,实现并发编程的最好方式就是利用多线程来实现。 1. python多线程模块 import threading thread1 = threading.Thread(target=function, args=(arg1,arg2,)) thread1.start()2. 线程池 线程池是一组已经就绪的线程,可以重复使用。我们只需要向线程池中添加任务,然后由线程池中的可用线程自动去执行任务而不需要手动创建线程。一般来说,线程池中线程的数量会根据实际情况动态调整。 from concurrent.futures import ThreadPoolExecutor pool = ThreadPoolExecutor(4) pool.submit(function, args=(arg1,)) 异步编程的概念在python中,异步编程就是指一种非阻塞式IO操作的方式。相比于同步编程,异步编程的核心是利用事件循环机制,通过一种“回调”函数的方式来处理IO操作。在python中实现异步编程的方式是使用asyncio模块。 1. asyncio模块 import asyncio async def function(): await asyncio.sleep(1) loop = asyncio.get_event_loop() results = loop.run_until_complete(function()) loop.close()2. async/await关键字 使用async/await关键字可以让函数变成异步函数,遇到IO操作时会中止当前函数执行直到IO完成。使用await关键字必须将函数声明成异步函数。 import asyncio async def function(): await asyncio.sleep(1) 并发编程和异步编程的区别尽管并发编程和异步编程都是实现高效利用CPU及IO的方式,但二者之间还是存在很大差别的。 1. 并发编程拥有多个线程(或进程),同时进行某一任务或操作,它强调的是分布式;而异步编程是一种流程全部交给事件循环来控制,它强调的是“协作式”的。 2. 并发编程适用于CPU密集性较高的场景,而异步编程适用于IO密集型场景。 3. 在并发编程中,线程之间的切换是由操作系统来控制的,而在异步编程中,则是应用程序控制线程的切换。 |
CopyRight 2018-2019 实验室设备网 版权所有 |