GIL锁与自定义互斥锁

Posted zhouhao666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
自定义互斥锁

 

以上是关于GIL锁与自定义互斥锁的主要内容,如果未能解决你的问题,请参考以下文章

python GIL全局解释器锁与互斥锁 目录

27 Apr 18 GIL 多进程多线程使用场景 线程互斥锁与GIL对比 基于多线程实现并发的套接字通信 进程池与线程池 同步异步阻塞非阻塞

实现声明式锁,支持分布式锁自定义锁SpEL和结合事务

GIL 线程池

python38 1.线程一堆队列 2.事件Event 3.协程 4.断点续传

python GIL锁与多cpu