python第九天(9-34)

python第九天(9-34)

一:并行,并发概念

  • 并发:指系统具有操作多个任务的能力
  • 并行:指形同具有同时操作多个任务的能力
  • 并行可以看作是并发的子集

二:同步,异步概念

  • 同步:所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或不继续执行后续操作-------就是等
  • 个人理解:当程序出现阻塞++++++++++++    的时候,一直等到阻塞结束
  • 异步:当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作
    • 个人理解:当程序处于阻塞的时候,就去执行其他的操作,等到阻塞结束,再回来

python第九天(9-34)

一:GIL

  • 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念
  • 即全局解释器所(global interpreter lock),每个线程在执行时候都需要先获取GIL,保证同一时刻只有一个线程可以执行代码,即同一时刻只有一个线程使用CPU,也就是说多线程并不是真正意义上的同时执行

二:任务分类

  • IO密集型任务:python的多线程是有意义的
  • 计算密集型任务:不适合python

 GIL一篇文章:https://blog.csdn.net/weixin_41594007/article/details/79485847

 

python第九天(9-34)

一:同步锁

  通常被用来实现对共享资源的同步访问,为每一个共享资源创建一个Lock对象,当你需要访问该资源时,调用acquire()方法来获取锁对象(如果其他线程已经获得了该锁,则当前线程需要等待其被释放),待资源访问完后,在调用release方式释放锁

二:代码实例解析

python第九天(9-34)
 1 def minus():
 2     global num
 3     temp=num
 4     #time.sleep(0.005)
 5     num=temp-1
 6 
 7 if __name__=="__main__":
 8     import threading,time
 9     num=100
10     thread=[]
11     for i in range(100):
12         i=threading.Thread(target=minus)
13         thread.append(i)
14         i.start()
15     for t in thread:#让主线程等待子线程完毕再执行
16         t.join()
17     print(num)
同步锁例子

 

上一篇:GIL,python全局解释器锁


下一篇:Python入门很难吗? 为什么越来越多的人都学Python?