Python中的进程、线程、协程
在Python中,进程、线程和协程都是用来实现多任务处理的。多任务处理指同时执行多个任务。
进程
进程是操作系统资源分配的最小单位。进程具有独立的内存空间,每个进程有自己的代码段、数据段和堆栈。进程通过操作系统的接口进行通信和协调,进程之间的切换是由操作系统进行管理和调度。
Python提供了multiprocessing
模块来支持多进程编程。multiprocessing
模块提供了Process
类,通过创建Process
实例来启动一个新的进程。示例代码:
import multiprocessing
def worker(name):
print('Worker %s started' % name)
if __name__ == '__main__':
p1 = multiprocessing.Process(target=worker, args=('A',))
p1.start()
p2 = multiprocessing.Process(target=worker, args=('B',))
p2.start()
运行脚本后,会同时启动两个进程,输出结果如下:
Worker A started
Worker B started
线程
线程是操作系统任务调度的最小单位。线程在进程内共享进程的资源,可以访问同一内存地址空间,比进程切换的代价更小,更高效。因此,线程之间的切换是比进程切换快得多。
Python提供了threading
模块来支持多线程编程。threading
模块提供了Thread
类,通过创建Thread
实例来启动一个新的线程。示例代码:
import threading
def worker(name):
print('Worker %s started' % name)
if __name__ == '__main__':
t1 = threading.Thread(target=worker, args=('A',))
t1.start()
t2 = threading.Thread(target=worker, args=('B',))
t2.start()
运行脚本后,会同时启动两个线程,输出结果如下:
Worker A started
Worker B started
协程
协程是一种轻量级的线程,也称微线程、纤程。协程在同一个线程内执行,因此,协程切换的代价更小,更高效。协程的实现需要特殊的语法支持,在Python 3.5之后,Python提供了asyncio
库来支持协程编程。
示例代码:
import asyncio
async def worker(name):
print('Worker %s started' % name)
await asyncio.sleep(1)
print('Worker %s finished' % name)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
tasks = [
loop.create_task(worker('A')),
loop.create_task(worker('B')),
]
loop.run_until_complete(asyncio.wait(tasks))
运行脚本后,会同时启动两个协程,每个协程执行完毕需要等待1秒钟,输出结果如下:
Worker A started
Worker B started
Worker A finished
Worker B finished
以上就是关于Python中进程、线程、协程的详细讲解和示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简述Python中的进程、线程、协程 - Python技术站