同步,多线程 ,多线程方式实现并发。

    IO请求几乎不占CPU的。同步请求相当于排队买东西,一个卡主了,其他的都结不了账了。线程并不是越多越好,如果他特别多还不如同步高,所以对线程要有个限制,所以就出现了线程池,线程池在python3里才有的,python2里没有的。创建进程的话是耗费很多资源的,创建线程是几乎不耗费资源的。创建进程相当于建一个工厂,然后工厂里有多人(这些人就相当于线程,共同分享进程的资源)。python的进程里面有个线程锁(GIL)是不允许多个线程同时工作,前提是不允许CPU去调度(一个CPU只能调度一个线程(以前的CPU是一核的所以说一个CPU同一时刻只能调度一个线程)),但是现在的CPU是多核的,可以同时调度多个线程(但是python的进程里有一个线程锁,到现在也不允许同时调度多个线程)。但是线程如果发IO请求的话,跟CPU是没有关系的,相当于CPU点一下它就可以去了(允许一下就可以了)。对于IO请求的话python的锁(GIL)没有多大的影响。IO请求多的话就用多线程,GIL只是负责CPU的调度,跟IO请求没有多大的关系的。    python中的每一个进程外面都有一个GIL锁(CPU要调度的时候只允许一个线程出去)。python里计算密集型就适合用多进程更好。

    进程:默认有主线程(必须工作的那个),可以有多线程共存,并且共享内部资源。计算密型用进程比较合适(与CPU有关)

    线程:线程是计算机中工作的最小单元。适合做IO请求。但是也不是很好,可能出现线程在等待,所以就出现了协程。

    协程:使用进程中的一个线程去做多个任务(即是如果派一个线程去打电话给一个人,但是那个人一直没有接电话,为了不让这个线程闲下来,所以有派它去做另外的事情,即是多任务,让他不能闲下来),微线程。

    GIL:全局解释器锁,这个东西是Python特有的。这个东西用来对进程内的线程加上一把锁,即是同一时刻被CPU调度的进程,进程中只有一个线程可以出来。Python特有,用于在进程中对所有的线程加锁,保证同一时刻只有一个线程被CPU调度
























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值