[英]How to terminate main program when thread ends? Still getting waiting for process to detach in python?
我有一個定義如下的主程序:
主程序
def main():
try:
registry.start_server()
except:
print("Shutting down the program")
pass
if __name__ == '__main__':
main()
registry.start_server() 是另一個模塊中的方法,如下所示:
def start_server():
t_server = threading.Thread(target=server.start)
t_server.start()
try:
t_server.join()
except KeyboardInterrupt:
print("Error")
raise ValueError
finally:
fp.close()
server.start 是另一個模塊中的方法,它以while(True)的方式進行一些監聽工作。 我不確定在 PyCharm 中單擊“停止”時如何停止整個程序,即 Ctrl + C(信號)。 我嘗試使用 Event 但沒有成功。 當信號被捕獲時,我通過引發異常來進入 main.py,但這並沒有終止整個程序。 它顯示Waiting for program to detach 。 唯一的方法是使用 SIGKILL。 我不明白程序一直掛在哪里? 我還嘗試在信號被捕獲時調用 sys.exit(0) 並將線程創建為 Deamon,但這也無濟於事。
在另一個模塊中編輯While True 方法
def start(self, event):
try:
while True:
if event.is_set():
if self.pubsub.channels:
print("It enters here")
message = self.pubsub.get_message(True)
if message:
.
.
.
else:
return
要解決這個問題,您需要做的就是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.