如何在Python线程中读取用户输入?
问题描述:
我试图从一个线程在python内容如下如何在Python线程中读取用户输入?
import threading, time, random
var = True
class MyThread(threading.Thread):
def set_name(self, name):
self.name = name
def run(self):
global var
while var == True:
print "In mythread " + self.name
time.sleep(random.randint(2,5))
class MyReader(threading.Thread):
def run(self):
global var
while var == True:
input = raw_input("Quit?")
if input == "q":
var = False
t1 = MyThread()
t1.set_name("One")
t2 = MyReader()
t1.start()
t2.start()
但是,如果我输入“Q”,我看到下面的错误。
In mythread One
Quit?q
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 522, in __bootstrap_inner
self.run()
File "test.py", line 20, in run
input = raw_input("Quit?")
EOFError
In mythread One
In mythread One
如何从线程获取用户输入?
答
你的代码有点奇怪。如果您严格使用阅读器退出程序,为什么不完全在线程代码之外使用它?它不需要在线程中,出于您的目的,并且不会在线程中工作。
无论如何,我不认为你想走这条路。考虑这个问题:多个线程停止同时请求输入,并且用户输入输入。它应该去哪个线程?我建议重组代码以避免这种需求。
答
同样所有对var的读取/写入都应该锁定