python提高

2018-07-09 13:29:20来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、什么是GIL?对线程有什么影响?

  1. GIL是全局解释器锁,和python没有任何关系,只是由于历史遗留原因难易从Cpython解释器中移除。
  2. 每个线程在执行时首先要获取GIL,这样保证了同一时间只有一个线程在执行任务,但是遇到IO阻塞时会释放GIL,所以多线程比单线程高效。
  3. 如果要发挥多核CPU的资源,可以使用多进程。为了避免受GIL的影响可以不使用官方推荐的Cpython解释器,也可以使用其他编程语言来实现多线程。

二、浅拷贝和深拷贝

  1. 浅拷贝:拷贝最顶层的数据给新的对象,只拷贝了引用
  2. 深拷贝:拷贝一个对象及其内部的子对象,即对一个对象的深层拷贝,完全拷贝
    import copy
    
    a = [11, 22]
    b = [33, 44]
    c = [a, b]
    d = copy.copy(c)  # 浅拷贝
    e = copy.deepcopy(c)  # 深拷贝
  • 可变类型:浅拷贝只拷贝外层,深拷贝完全拷贝
  • 不可变类型:1.只要是外层是不可变类型,浅拷贝不会拷贝,只是指向了同一个内存地址。2.全部是不可变类型,深拷贝也不会拷贝,只是指向了同一个内存地址。3.外层是不可变类型,内层有可变类型,深拷贝会完全拷贝产生新的对象。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:面试十次Python工程师,十次都是回去等消息,总结了十大陷阱!

下一篇:python JOB(作业)