python中对象的管理与引用计数相关,,当引用计数变为0时,该对象便会被垃圾回收器回收,当撤销对一个对象的引用时,python 解释器对对象以及计数管理会分为以下两步:
1,使用引用计数减一
2.判断该计数是否为0,如果为0,则销毁该对象
假设a,b线程同时引用一个对象obj,此时该对象的引用计数为2,如果线程a打算撤销对该对象的引用,引用计数减一,由于存在多线程机制,a恰巧在此时被挂起,b进入执行状态,但b不幸的是b此时也要撤销对该对象的引用,引用计数减一,此时obj的引用计数为0,因此该对象被销毁,内存被释放,此时a再次被唤醒去执行第二步的操作时发现已经面目全非,则其操作结果未可知。
鉴于此python引入GIL,以保证对虚拟机内部共享资源访问的互斥性。
原文地址:https://www.cnblogs.com/xwyjh/p/13956403.html