如何杀死使用输入的线程?

How to kill a thread that uses an input?

我正在尝试使用套接字和线程制作在线游戏。这是一款竞争激烈的刽子手游戏,最快完成单词的人获胜。我想要的是,当其中一名玩家 wins/runs 生命结束时,另一名玩家被踢出游戏并被告知他们有 won/lost。但是,我 运行 遇到了问题。

1:如果我使用“threading”,没有办法关闭线程(因为程序需要读取用户输入,所以我需要使用input()函数,这意味着播放器的线程不能'在他们插入一个字符之前不会被终止。

2:如果我使用“multiprocessing”(它有一个 terminate() 函数),我不能使用 input()(multiprocessing 不允许)。

我陷入了僵局,我该怎么办?

P.D: 这是我第一个Whosebug post,如果写错了请告诉我post!

好的,我明白了,这是一个丑陋而复杂的解决方案,但它确实有效。 我创建了一个模拟“输入”命令的程序,而不是输入命令本身(因此它不会停止进程)。 这是:

import pynput.keyboard

global string
string=""
c=0
global oldprinted
oldprinted=""
def GetInput():
    import pynput
    def on_press(key):
        global oldprinted
        global string
        if key==pynput.keyboard.Key.enter:
            listener.stop()
        else:
            prompt="Introduce your input: "
            try:
                if key==pynput.keyboard.Key.backspace and len(string)>0:
                    string=string[:-1]
                else:
                    string+=str(key.char)
                prompt+=(string)
                print(" "*len(oldprinted),end="\r")
                print(prompt,end="\r")
                oldprinted=prompt
            except:
                pass
    print("Introduce your input: ",end="\r")
    with pynput.keyboard.Listener(suppress=True,on_press=on_press) as listener:
        listener.join()
    return string


data=GetInput()
print("\n")