现象是这样的,有些时候python运行死了,就用任务管理器强制结束
过几秒又会自动启动出好多,可能一个,两个,三个python进程出来
杀了他们,过会又出来,如此反复,不能真正的杀死pytohn
有时候只是会多出几个来,杀了就不会再自启了,但是像永远杀不死的情况也是有发生过的
这样谁受得了啊,无限自启,还越来越多
有人遇到类似的问题吗?怎么解决?
就一段普通的代码(代码会造成线程死锁):
import threading
import time
class MyThread(threading.Thread):
def run(self):
global num
time.sleep(1)
if mutex.acquire(1):
num = num+1
msg = self.name+' run!'
print(msg)
# 卡在这里了,自身不release就要接着acquire,不可能
mutex.acquire()
print('acquire')
mutex.release()
print('release 1')
mutex.release()
print('release 2')
num = 0
mutex = threading.Lock()
def test():
for i in range(5):
t = MyThread()
t.start()
if __name__ == '__main__':
test()
换成正常运行的也是会出现类似的问题(这个可以正常运行):
import threading
import time
class MyThread(threading.Thread):
def run(self):
global num
time.sleep(1)
if mutex.acquire(1):
num = num+1
msg = self.name+' run!'
print(msg)
# 卡在这里了,自身不release就要接着acquire,不可能
# mutex.acquire()
# print('acquire')
# mutex.release()
# print('release 1')
mutex.release()
print('release 2')
num = 0
mutex = threading.Lock()
def test():
for i in range(5):
t = MyThread()
t.start()
if __name__ == '__main__':
test()
但是还是会出现上面的情况
kp是cmd命令:
taskkill /F /IM python.exe()
有时候又好了,比如现在:
就是不知道为什么会这样,明明程序中并没有用多进程还给我这么搞
代码不限于上面的那个,有些时候写些其他东西也会出现类似的情况
求解,谢谢!
是win7下,python3.6 64位,包装了好多(应该不是包的问题吧),python我觉得我的也没啥问题
我可能就是不知道pytohn运行机制吧
貌似找到了一个怀疑的原因:
我是用sublime text3写python,装过这些插件:
原来就发现某个插件(记不得名称了),会自动查找我代码的语法错误,它会运行我本地的pytohn,造成运行好几个python进程,造成我cpu占用过高(其实也没多高),然后我一怒之下就把那插件给卸载了
刚发生的状况为,我先kp掉所有的pytohn进程,然后切换回sublime text3中,发现sub test 假死,卡了1秒多,然后多了几个pytohn进程,十有八九吧,不是代码的问题233333
后来我关了sub,kp掉pytohn,打开sub,又多几个python,没跑了,十有八九,要不sub的问题,要不sub插件的问题
有了解sub插件的大佬嘛?求解释,大概应该是哪几个插件有问题?
还是我又理解错了,不是sub的问题??
谢谢
对了,刚关了sub,python就没了....
我是不是该抛弃sub了....
终于知道为啥要用vim写代码了,我感觉我代码有问题都是运行后编译器高速我的,sub感觉还算好用吧,要不就是我强迫症2333333