一文讲透“进程、线程、协程”( 五 )

Total time:1.003425121307373

  • 多线程的执行效性能高于多进程
是不是认为这就结束了?远还没有呢 。 针对I/O密集型的程序 , 协程的执行效率更高 , 因为它是程序自身所控制的 , 这样将节省线程创建和切换所带来的开销 。
以Python中asyncio应用为依赖 , 使用async/await语法进行协程的创建和使用 。
  • 程序代码
import timeimport asyncioasync def coroutine: await asyncio.sleep(1) ## 模拟IO操作if __name__ == "__main__": start_time = time.time loop = asyncio.get_event_loop tasks = for i in range(5): task = loop.create_task(coroutine) tasks.append(task) loop.run_until_complete(asyncio.wait(tasks)) loop.close end_time = time.time print("total time:", end_time - start_time)
  • 结果
total time: 1.001854419708252
  • 协程的执行效性能高于多线程
总结本文从操作系统原理出发结合代码实践讲解了进程 , 线程和协程以及他们之间的关系 。 并且 , 总结和整理了Python实践中针对不同的场景如何选择对应的方案 , 如下:
  • CPU密集型:多进程
  • IO密集型:多线程(协程维护成本较高,而且在读写文件方面效率没有显著提升)
  • CPU密集和IO密集:多进程+协程