写一段Python程序,有两个进程,一个正在执行每秒输出一次空格的功能,另一个当按下k键就终止自己和另一个进程的运行
时间: 2024-12-04 22:30:21 浏览: 23
你可以使用`multiprocessing`模块创建两个并行运行的进程,并利用`keyboard`库来监听键盘输入。下面是一个简单的Python程序示例:
```python
import multiprocessing
from time import sleep
import keyboard
# 创建两个进程
def print_spaces(interval):
while True:
print(' ', end='', flush=True) # 每秒输出一个空格
sleep(interval)
def terminate_on_key():
try:
print("Press 'k' to terminate both processes.")
while not keyboard.is_pressed('k'):
pass
print("Terminating both processes...")
# 使用Popen.terminate()终止子进程
if isinstance(p, multiprocessing.Process):
p.terminate()
else: # 如果是线程,使用threading.Thread.join()来结束
print_spaces_thread.join()
# 主进程也退出
exit(0)
except KeyboardInterrupt:
print("Keyboard interrupt detected, exiting.")
# 创建主进程和子进程
p = multiprocessing.Process(target=print_spaces, args=(1,))
print_spaces_thread = threading.Thread(target=print_spaces, args=(1,))
# 启动子进程
p.start()
# 同步运行终止函数
terminate_on_key_thread = threading.Thread(target=terminate_on_key)
terminate_on_key_thread.start()
# 等待进程结束
p.join() # 确保打印空间的进程先结束
```
在这个例子中,`print_spaces`函数在一个单独的进程中每秒打印一个空格,而`terminate_on_key`函数启动一个线程来监听键盘事件。当你按下'k'键时,它会终止自身以及打印空格的进程。
注意:在实际应用中,你可能需要安装`keyboard`库来处理键盘输入,可以使用`pip install keyboard`命令安装。此外,这个示例假设你已经导入了`threading`模块,如果未导入则需要加上`import threading`。
阅读全文