随笔分类 -  线程模块

这一部分是对线程学习的一次总结
摘要:1.同一线程对一把锁连续acquire 死锁 2.多把锁(互斥锁,递归锁),并且在多个线程中 交叉使用 会死锁 如果是互斥锁,出现了死锁现象,最快速的解决方法就是把互斥锁变成一把递归锁 或者是把两把互斥锁变成一把互斥锁 互斥锁 效率低 但是会出现死锁现象 from threading import 阅读全文
posted @ 2021-02-04 22:31 苦行僧冬*婷 阅读(59) 评论(0) 推荐(0)
摘要:1.+= -= *= /= if while会数据不安全 import dis a = 1 def func(): global a a += 1 print(dis.dis(func)) 上面函数通过dis模块查看底层指令如下 底层指令 108 0 LOAD_GLOBAL 0 (a) 把a加载到c 阅读全文
posted @ 2021-02-04 22:25 苦行僧冬*婷 阅读(58) 评论(0) 推荐(0)
摘要:1. 线程可以利用多核,但是在cpython中 有GIL全局解释器锁,所以不能利用多核 2.线程enumerate函数 导入之后会和内置函数enumerate重名,需要做特殊的处理 1. 起别名 from threading import enumerate as en 2.导入 import th 阅读全文
posted @ 2021-02-04 21:59 苦行僧冬*婷 阅读(44) 评论(0) 推荐(0)
摘要:线程和进程的主要区别 1.线程数据共享,线程启动,关闭,切换特别快,大概是进程的10倍 gc 垃圾回收机制 引用计数 + 分带回收在cpython中 全局解释器是用来完成垃圾回收机制的,对不同线程引用计数的变化记录更加精确GIL(global interpreter lock) 导致了同一进程中的多 阅读全文
posted @ 2021-02-03 13:05 苦行僧冬*婷 阅读(71) 评论(0) 推荐(0)