zoukankan      html  css  js  c++  java
  • GIL和copy

    GIL: Global Interpreter Lock  全局解释器锁
    
        多任务执行占CPU
            多任务占用CPU的资源消耗:进程>线程>协程
            在cpython解释器中只有进程是真的多任务,线程和协程都是假的多任务
            
        什么是全局解释器锁
            在cpython解释器中,用多线程做多任务的事情,在全局有一个互斥锁在同一时刻只能允许一个线程在执行任务,其他线程排队等待获取锁,
            
        如何解决GIL在cpython解释器中带来的问题
            1.根据程序的类型
                计算密集型:进程,算法
                IO密集型(input output):线程、协程
            2.换解释器
          eg:
            jpython
    3.换语言
          因为python是一种解释性的语言,他可以兼容好多语言和平台
          eg:
            c语言,C++,C#,java
    深浅拷贝:
        
        深拷贝:拷贝一个内容,会拷贝所有信息. deepcopy()
        浅拷贝:拷贝一个内容,只拷贝引用(引用地址中的数据). copy()
    list: 深拷贝: deepcopy() 拷贝所有数据 浅拷贝: copy() 只拷贝引用地址,并没有拷贝内容 import copy a
    = [11, 22] b = [33, 44] c = [a, b] d = copy.copy(c) e = copy.deepcopy(c) print(id(c[0])) print(id(d[0])) print(id(e[0])) tuple: 普通元祖 深拷贝:deepcopy 浅拷贝:copy() deepcopy()和copy()都只拷贝引用地址中的数据 元祖中是可变类型时: 深拷贝: deepcopy() 拷贝所有数据 浅拷贝: copy() 只拷贝引用地址中的数据 tuple() a = (11, 22) b = (33, 44) c = (a, b) d = copy.copy(c) e = copy.deepcopy(c) print(id(c)) print(id(d)) print(id(e)) +++++++++++ a = [11, 22] b = [33, 44] c = (a, b) d = copy.copy(c) e = copy.deepcopy(c) a.append(55) print(id(c[0])) print(id(d[0])) print(id(e[0])) print(c) print(d) print(e)
      其他数据类型基本都是浅拷贝如: int float str
  • 相关阅读:
    【NIPS 2018】完整论文下载链接
    【今日CV 视觉论文速览】30 Nov 2018
    【超好玩的在线AI项目】浏览器里玩AI------持续更新
    hdu 4035 Maze 概率DP
    hdu 4089 Activation 概率DP
    hdu 4405 Aeroplane chess 概率DP
    zoj 3329 One Person Game 概率DP
    poj 2096 Collecting Bugs 概率DP
    poj 3744 Scout YYF I
    2013 Multi-University Training Contest 5 Partition
  • 原文地址:https://www.cnblogs.com/wangxiongbing/p/10076065.html
Copyright © 2011-2022 走看看