在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python  C  C++  Ruby  網(wǎng)絡(luò)安全/ Python 為什么進(jìn)程會(huì)自動(dòng)啟動(dòng),殺不死?

Python 為什么進(jìn)程會(huì)自動(dòng)啟動(dòng),殺不死?

現(xiàn)象是這樣的,有些時(shí)候python運(yùn)行死了,就用任務(wù)管理器強(qiáng)制結(jié)束
過(guò)幾秒又會(huì)自動(dòng)啟動(dòng)出好多,可能一個(gè),兩個(gè),三個(gè)python進(jìn)程出來(lái)
殺了他們,過(guò)會(huì)又出來(lái),如此反復(fù),不能真正的殺死pytohn
有時(shí)候只是會(huì)多出幾個(gè)來(lái),殺了就不會(huì)再自啟了,但是像永遠(yuǎn)殺不死的情況也是有發(fā)生過(guò)的
這樣誰(shuí)受得了啊,無(wú)限自啟,還越來(lái)越多
有人遇到類似的問(wèn)題嗎?怎么解決?

就一段普通的代碼(代碼會(huì)造成線程死鎖):

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()

換成正常運(yùn)行的也是會(huì)出現(xiàn)類似的問(wèn)題(這個(gè)可以正常運(yùn)行):

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()

但是還是會(huì)出現(xiàn)上面的情況
圖片描述

kp是cmd命令:

taskkill /F /IM python.exe()

有時(shí)候又好了,比如現(xiàn)在:

圖片描述

就是不知道為什么會(huì)這樣,明明程序中并沒(méi)有用多進(jìn)程還給我這么搞
代碼不限于上面的那個(gè),有些時(shí)候?qū)懶┢渌麞|西也會(huì)出現(xiàn)類似的情況
求解,謝謝!

是win7下,python3.6 64位,包裝了好多(應(yīng)該不是包的問(wèn)題吧),python我覺(jué)得我的也沒(méi)啥問(wèn)題
我可能就是不知道pytohn運(yùn)行機(jī)制吧

貌似找到了一個(gè)懷疑的原因:
我是用sublime text3寫python,裝過(guò)這些插件:
圖片描述

原來(lái)就發(fā)現(xiàn)某個(gè)插件(記不得名稱了),會(huì)自動(dòng)查找我代碼的語(yǔ)法錯(cuò)誤,它會(huì)運(yùn)行我本地的pytohn,造成運(yùn)行好幾個(gè)python進(jìn)程,造成我cpu占用過(guò)高(其實(shí)也沒(méi)多高),然后我一怒之下就把那插件給卸載了

剛發(fā)生的狀況為,我先kp掉所有的pytohn進(jìn)程,然后切換回sublime text3中,發(fā)現(xiàn)sub test 假死,卡了1秒多,然后多了幾個(gè)pytohn進(jìn)程,十有八九吧,不是代碼的問(wèn)題233333

后來(lái)我關(guān)了sub,kp掉pytohn,打開(kāi)sub,又多幾個(gè)python,沒(méi)跑了,十有八九,要不sub的問(wèn)題,要不sub插件的問(wèn)題
有了解sub插件的大佬嘛?求解釋,大概應(yīng)該是哪幾個(gè)插件有問(wèn)題?

還是我又理解錯(cuò)了,不是sub的問(wèn)題??
謝謝

對(duì)了,剛關(guān)了sub,python就沒(méi)了....
我是不是該拋棄sub了....
終于知道為啥要用vim寫代碼了,我感覺(jué)我代碼有問(wèn)題都是運(yùn)行后編譯器高速我的,sub感覺(jué)還算好用吧,要不就是我強(qiáng)迫癥2333333

回答
編輯回答
浪蕩不羈

初步來(lái)看是真的是sublime引起的,因?yàn)榘惭b了一些自動(dòng)補(bǔ)全,自動(dòng)提示的包,在寫代碼的時(shí)候sub會(huì)調(diào)用python來(lái)為我們最一些補(bǔ)全和差錯(cuò)

又因?yàn)槲掖a卡死是經(jīng)常容易發(fā)生的事情,又不知道卡死的是哪一個(gè)pytohn,故使用命令結(jié)束所有的python進(jìn)程,這就導(dǎo)致本來(lái)運(yùn)行在sublime里的python進(jìn)程遭到殺死,sublime檢測(cè)到后,會(huì)自動(dòng)重啟python進(jìn)程,造成了我感覺(jué)python殺不死的假象

不過(guò)sublime表面小巧,啟動(dòng)快速,占內(nèi)存小,但就我目前的配置來(lái)說(shuō),這樣(可能由插件引起)的占cpu還是比較高的,電腦是i7 7700,占了有30%到40%差不多,不殺進(jìn)程,用sublime倒是一點(diǎn)都不卡,主要是寫的程序一般為cpu密集型的,sub占我cpu我是不太高興,現(xiàn)在采取的做法是一段時(shí)間重啟下sublime可以解決大部分問(wèn)題

以上

2018年8月6日 18:07