查看键盘线路以退出多线程脚本后,我想知道是否可以在键盘上使用向上和下的键以增加/减少所使用的线程数量?希望这将以与键盘干扰相同的方式发生,以便随时发生。这样的事情是可能的还是还有另一种更适合此的方法?
def do_something(input_file, threads):
concurrent = threads
l = read_csv(input_file)
for i in range(concurrent):
t = Thread(target=create_accounts)
t.daemon = True
t.start()
try:
for account in l:
q.put(account)
q.join()
except KeyboardInterrupt:
sys.exit(1)
if __name__ == '__main__':
threads = 1
q = Queue(threads * 2)
do_something('test.csv', threads)
a KeyboardInterrupt
是一件特殊的事情。在UNIX上,Python基本上使端子将 ^c转换为SIGINT
信号,并为SIGINT
安装一个信号处理程序,以提高异常。在Windows上,它有点复杂,但基本想法相同。普通关键不会中断您的代码。
,但是您只能将线程用于聆听键盘。您的主线程似乎没有做任何有用的事情;如果是这样,请踢到背景线程。然后,您的主线程可以坐在周围等待键盘输入。
但是……您如何等待键盘输入?那是棘手的部分。通常,在大多数平台上,输入是线条缓冲。箭头钥匙已经具有特殊的含义,例如骑自行车浏览过去条目的历史。
您可以通过在Windows上使用控制台I/O,在UNIX上使用termios
),并了解有关字符代码的整个杂乱业务,以便您实际上可以识别箭头键。但是您可能会发现使用高级包装器更容易。有各种各样的选择,从诸如getch
和consoleio
之类的东西到PyGame或QT;围绕PYPI搜索。