下面我来详细讲解“python基础之并发编程(二)”的完整攻略。
1. 前言
本文主要介绍Python中的并发编程,包括多线程、多进程、协程等,并对不同方式的并发编程之间进行了比较,以便读者能够更好地选择适合自己的并发编程方式。
2. 多进程编程
多进程编程是Python中实现并发编程的一种方式,通过使用multiprocessing模块可以创建多个进程,对于多核CPU系统可以充分利用CPU资源。下面是一个简单的多进程编程示例。
import multiprocessing
def worker(num):
"""多进程执行的函数"""
print('worker: ', num)
if __name__ == '__main__':
# 创建多个进程
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
p.start()
以上代码中,我们通过multiprocessing模块创建了5个进程,每个进程都执行了worker函数,并将进程编号作为参数传递给worker函数。
3. 多线程编程
除了多进程编程外,Python中还可以使用多线程编程实现并发编程,通过使用threading模块可以创建多个线程。与多进程不同的是,多线程模式将多个线程放在同一个进程中,可以更好地利用CPU资源。下面是一个简单的多线程编程示例。
import threading
def worker(num):
"""多线程执行的函数"""
print('worker: ', num)
if __name__ == '__main__':
# 创建多个线程
for i in range(5):
t = threading.Thread(target=worker, args=(i,))
t.start()
以上代码中,我们通过threading模块创建了5个线程,每个线程都执行了worker函数,并将线程编号作为参数传递给worker函数。
4. 协程编程
协程是一种轻量级的并发编程方式,Python中通过使用asyncio模块可以实现协程编程。协程遵循一个重要的特点,即“主动让出控制权”,当一个协程遇到IO操作时,会自动“让出”CPU,然后去执行其他协程,从而实现“同时”执行多个协程的效果。下面是一个简单的协程编程示例。
import asyncio
async def worker():
"""协程执行的函数"""
print('start')
await asyncio.sleep(1)
print('end')
if __name__ == '__main__':
# 创建事件循环
loop = asyncio.get_event_loop()
# 创建任务
tasks = [worker() for i in range(5)]
# 执行任务
loop.run_until_complete(asyncio.wait(tasks))
# 关闭事件循环
loop.close()
以上代码中,我们通过asyncio模块创建了5个协程,每个协程都执行了worker函数,并等待1秒钟后结束。
5. 总结
通过以上示例,我们可以对比多进程、多线程、协程三种并发编程方式的不同之处。多进程适用于CPU密集型任务,多线程适用于IO密集型任务,而协程则适用于并发量不大的任务。在实际开发中,我们需要根据具体情况选择适合自己的并发编程方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python基础之并发编程(二) - Python技术站