import multiprocessing
import time
import signal
import select
import sys
import os
def my_code():
while True:
print 'Do something...'
time.sleep(1)
if __name__ == '__main__':
p = multiprocessing.Process(target=my_code)
p.start()
# wait for a key
select.select([sys.stdin],[],[])
os.kill(p.pid, signal.SIGINT)
KeyboardInterrupt
是Python捕获SIGINT
系统信号时引发的异常。你可以随意举起:raise KeyboardInterrupt
。但是,您不能自己生成SIGINT信号,必须将信号发送到进程。通过按CTRL-C可以实现类似的效果,它向正在运行的进程发出SIGINT信号。你知道吗如果您有一个循环,并且希望在某个键上中断它,那么您必须侦听任何键盘事件并在捕获时引发异常;您需要一种机制来执行代码并同时侦听事件。你知道吗
我可以想象这样的情景:
例如,Python 2.7(未测试):
由于stdin缓冲,至少在Linux上,上面的代码在按键后需要[Enter]。 但是,可以使用一些Python模块轻松地解决这个问题,例如
getc
。你知道吗相关问题 更多 >
编程相关推荐