我尝试在运行其他进程时运行后台计时器。我使用过thread.Thread:
import threading
import random
import time
import sys
def timer(limit):
time.sleep(limit)
sys.exit()
def code():
dictionary=['hello','loading','dumb']
word=[]
c=random.choice(dictionary)
answer=c
for x in c:
word.append(x)
y=0
words=''
while y!=len(c):
x=random.choice(word)
word.remove(x)
words=words+x
y+=1
print(words)
guess=input()
if guess==answer:
print('NOICE')
else:
print("NUB")
permit=input('Play Again?')
t1=threading.Thread(target=timer, args=(10,))
t2=threading.Thread(target=code)
t1.start()
t2.start()
这就是我的所有代码。问题是,当我运行它时,计时器在退出之前等待输入。无论输入是否输入,我希望计时器以十秒标记退出。我认为线程会使进程不必等待彼此。请帮忙? 哦,我只有几天进入python,所以请保持简单的解释。感谢。
答案 0 :(得分:0)
当您在其中一个线程中调用sys.exit()
时,这不会影响其他线程。这就是他们的本性!所有线程都是相同的。
如果你想创建一个在程序退出时终止的线程,需要将它变成一个守护进程(想想主线程下的一个slave)。
要做到这一点:
slave_thread.daemon = True
在你的情况下:
t2.daemon = True
因此,当主线程退出时,t2
将被终止。不要将此主线程与t1
混淆。当线程正在运行(t1
)时,主线程将继续执行。但是只要t1
退出,t2
将被终止,因为它是守护进程。