python 程序 Ctrl+C退出
阿新 • • 發佈:2019-01-09
今天寫的一段程式碼需要用到程序multiprocessing,這個哥們比較任性,用Ctrl+C無法退出,當程式跑完之後又給我報了一段錯誤 我也是醉了。
然後我百度了一下發現了執行緒的另一個函式multiprocessing.join(),這函式厲害了!不管是不是屍體,只要父程序死了,都直接回收。我就把他給加上了,又試了一下
錯誤資訊竟然少了,然而剩下的這個錯誤資訊怎麼也不消失,即使用try也沒用。看著join我突然想到C語言中也有這個函式,那是不是也可以用c中的signal呢,於是我加上了這 signal.signal(signal.SIGINT, CtrlC)
這一段程式碼 果然天從人願 問題完美解決了!
完整程式碼如下:
def CtrlC():
#如果用sys.exit()在上層有try的情況下達不到直接結束程式的效果(自行百度)
os._exit(0)
try:
signal.signal(signal.SIGINT, CtrlC)
signal.signal(signal.SIGTERM, CtrlC)
del = multiprocessing.Process(target=Del, args=())
test = multiprocessing.Process(target=Re,args=(con,))
del.start()
test.start()
del.join()
test.join()
except Exception,ex:
print ex
其中del程序是啟動一個後臺程序,不過這個程序無法自動切換bash。
test程序是一個普通的print程序
這樣這個程式就可以完美執行了