cmd='taskkill/F/IMxxxx.exe'os.system(cmd)
importsubprocessa=subprocess.Popen('dir',shell=True)然后就可以用a.kill()來殺進(jìn)程
另外的辦法是,某一個(gè)子線程專用于監(jiān)控狀態(tài)。它發(fā)現(xiàn)狀態(tài)不對(duì)時(shí),直接強(qiáng)制進(jìn)程退出。辦法1,發(fā)消息給主進(jìn)程,讓主進(jìn)程退出。辦法2:用kill,pskill等方法,直接按進(jìn)程PID殺進(jìn)程。
回supervisord專門干的就是這事,這個(gè)已經(jīng)很成熟,服務(wù)器上的Python和MongoDB進(jìn)程都是用它管理的。如果supervisord還不滿足你的需求,如你需要在自己的程序中進(jìn)行進(jìn)程管理,你可以去參考supervisord的代碼實(shí)現(xiàn)。簡(jiǎn)單的,可以自己...
主線程捕獲kill的信號(hào)以后去終止其他線程,等其他線程完成以后,再在主線程中退出.不過更現(xiàn)代的實(shí)現(xiàn)并發(fā)的方法是使用異步,而不是多線程.
別人寫的,轉(zhuǎn)一下:importctypesimportsysTH32CS_SNAPPROCESS=0x00000002classPROCESSENTRY32(ctypes.Structure):_fields_=[("dwSize",ctypes.c_ulong),("cntUsage",ctypes.c_ulong),("th32ProcessI
os.fork()正常返回創(chuàng)建的子進(jìn)程id,可以使用os.kill(pid,sig)殺死子進(jìn)程。
os.system是執(zhí)行命令,是否打印取決于命令是否有返回如果你想不讓其打印可以在命令中做手腳如:os.system('taskkill/IMdllhost.exe>NUL')
如果是爬蟲的話,這個(gè)一般都是由于網(wǎng)絡(luò)原因造成的卡住,可以做兩層控制:在HTTP請(qǐng)求上設(shè)置好超時(shí)時(shí)間,最好設(shè)定sockect的超時(shí),這樣更底層一些。在上層做一個(gè)檢測(cè)機(jī)制,定時(shí)輪詢線程是否正常,如果遇到不響應(yīng)的直接kill掉。
首先終止該進(jìn)程。隨后單擊“開始”-“運(yùn)行”,輸入“services.msc”并回車;看看有沒有可疑服務(wù)。如果有,右擊它并選“停止”。然后再次右擊,選擇“屬性”,在“啟動(dòng)類型”下拉列表中選擇“已禁用”,單擊“確定”。然后升級(jí)...