互斥锁-Lock #多线程中虽然有GIL,但是还是有可能产生数据不安全,故还需加锁 from threading import Lock, Thread #互斥锁 import time def eat1(lock): global n lock.acquire() temp =n time.sleep(0.2) n = temp - 1 lock.release() if __name__ == '__main__': n = 10 t_lst = [] lock = Lock() for i…
一.GIL - 全局解释器锁 有了GIL的存在,同一时刻同一进程中只有一个线程被执行:由于线程不能使用cpu多核,可以开多个进程实现线程的并发,因为每个进程都会含有一个线程,每个进程都有自己的GIL锁. ① py文件产生了多个线程,到达解释器 ② 由于GIL锁问题,所以只能执行一个线程,先调用一个线程,进行编译器编译成 .pyc字节码 ③ 字节码进入虚拟机形成机器码 ④ 机器码由cpu执行 …
互斥锁与join 互斥锁和join都可以把并发变成串行 以下代码是用join实现串行 from multiprocessing import Process import time import json class Foo(object): def search(self, name): with open("db.txt", "r") as f_read: dic = json.load(f_read) time.sleep(1) # 模拟读数据的网络延迟 pr…