首页 > 编程语言 > 详细

进程、线程、协程的理解和使用

时间:2019-10-25 15:58:56      阅读:105      评论:0      收藏:0      [点我收藏+]

资源占用:进程>线程>协程


协程创建:
1.导入gevent import gevent
2.请猴子打补丁 from gevent import monkey
3.任务加入到任务列表 任务列表.append(gevent.spawn(任务函数))
4.等待列表join/joinall 任务名.join() / gevent.joinall(任务列表)

进程创建:
1.导入进程包 import multiprocessing
2.创建子进程并指定执行任务 xxx = multiprocessing.Process(target=任务名,args=(参数,),kwargs={"xxx":x},daemon=True)
3.启动进程执行任务 xxx.start()

进程是操作系统资源分配的基本单位
进程之间不共享全局变量
主进程会等待所有子进程执行结束再结束

线程创建:
import threading
xxx = threading.Thread(target=任务名,args=(参数,),kwargs={"xxx":x},daemon=True)
xxx.start()

线程是CPU调度的基本单位
线程之间共享全局变量,注意资源竞争的问题
主线程会等待所有子线程执行结束再结束

线程缺点:也能使用多核但是不能充分利用,因为有gil(全局解释器锁)问题
解决:将线程转为进程,换解释器,或者调用C开发的多线程(因为C开发高性能)

进程、线程、协程的理解和使用

原文:https://www.cnblogs.com/Gdavid/p/11738336.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!