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

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


协程创建:
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开发高性能)

posted @ 2019-10-25 15:35  Gdavid  阅读(233)  评论(0编辑  收藏  举报