gpt4 book ai didi

python - 为什么Python3守护线程在控制台中立即关闭?

转载 作者:行者123 更新时间:2023-12-01 01:35:23 34 4
gpt4 key购买 nike

此代码在空闲3中工作,但在控制台(MAC、Windows Linux)中,如果设置为守护进程,线程2将立即关闭。有什么解释吗?也许还有一种解决方法,可以正确地让守护线程请求用户输入?

import queue
import threading
import sys

def worker(q):
_text = ''
while _text == '':
_text = q.get()
print('[worker]input was ',_text)
sys.exit()

def dialog(q):
while True:
try:
_select = input('[dialog]enter text:')
if _select != '':
q.put(_select)
except EOFError:
pass
except KeyboardInterrupt:
print("bye")
sys.exit(0)
except Exception as e:
print(e)
sys.exit(1)
if 'esc'.lower() in _select.lower():
sys.exit()

q = queue.Queue()
thread1 = threading.Thread(target=worker,args=(q,))
thread2 = threading.Thread(target=dialog,args=(q,))
thread1.setDaemon(True)
thread2.setDaemon(True)
print('start asking')
thread1.start()
thread2.start()

感谢您对这个问题的任何提示

最佳答案

通常,当主线程退出时,子线程就会终止。作为示例给出的代码在启动两个子线程后直接退出。为了解决这个问题,您应该将线程“加入”回主线程。这将使主线程等待子线程终止。

thread1.join()
thread2.join()
文件末尾的

应该可以解决这个问题。

https://docs.python.org/3.5/library/threading.html#threading.Thread.join

另外,为什么要将此应用程序作为守护进程运行?

关于python - 为什么Python3守护线程在控制台中立即关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52439021/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com