我有一個使用多個守護程序線程的Python程序。我想從外面停止該程序,最好是從另一個Python腳本中停止。如何從外部停止多線程Python腳本
我已經從shell中嘗試了kill <pid>
,只是爲了測試,但它不適用於多線程腳本。
一種方法是讓程序每隔n秒檢查一次文件作爲終止標誌。我確信有更好的方法可以做到這一點。
請注意,我想幹淨地停止程序,所以我認爲從外部以某種異常形式發送的消息將是理想的。
編輯:
這裏是我做到了,此刻一個例子:
try:
open('myprog.lck', 'w').close()
while True:
time.sleep(1)
try:
open('myprog.lck').close()
except IOError:
raise KeyboardInterrupt
except KeyboardInterrupt:
print 'MyProgram terminated.'
刪除文件myprog.lck
將導致腳本停止。上面的例子是不好的方法來做到這一點?
你有沒有試過讓'kill'發送一個信號,而不是默認的'TERM'?如果一個進程真的行事不端,你總是可以使用'KILL'('kill -KILL')。 –
icktoofay
你的意思是多進程或多線程? – agf
@icktoofay該程序運行得非常好,我只是想能夠從另一個Python腳本停止或重新啓動程序。我會編輯這個問題以避免混淆。 – Rainbow