zoukankan      html  css  js  c++  java
  • GIL锁与自定义互斥锁

    Gil锁保证内存管理数据安全,不能保证所有数据的安全,不同的数据要加不同的锁
    from threading import Thread,Lock
    import time
    
    mutex=Lock()
    n=100
    def task():
        global n
        temp=n
        time.sleep(0.1)
        n=temp-1
    
    if __name__ == '__main__':
        l=[]
        for i in range(100):
            t=Thread(target=task)
            l.append(t)
            t.start()
    
        for t in l:
            t.join()
        print(n)
    
    结果:
    99
    举例

    自定义互斥锁可以保证相关数据安全,但是效率变低了

    from threading import Thread,Lock
    import time
    
    mutex=Lock()
    n=100
    def task():
        global n
        with mutex:
            temp=n
            time.sleep(0.1)
            n=temp-1
    
    if __name__ == '__main__':
        l=[]
        for i in range(100):
            t=Thread(target=task)
            l.append(t)
            t.start()
    
        for t in l:
            t.join()
        print(n)
    
    结果:
    0
    自定义互斥锁
  • 相关阅读:
    用户管理
    开机、重启、用户登录注销
    网络请求的封装
    Vuex
    Promise
    Vue Router(二)
    Vue Router(一)
    Vue CLI
    前端模块化-导入导出
    插槽
  • 原文地址:https://www.cnblogs.com/zhouhao123/p/11216467.html
Copyright © 2011-2022 走看看