【发布时间】:2020-12-24 11:55:51
【问题描述】:
我有一个系统利用函数,monitor(),我想运行它直到用户停止它,方法是输入数字零,exit_collecting()。我不想突然结束程序,因为这会否定后续代码。
我尝试使用多线程运行这两个函数,exit_collecting() 和 monitor(),让 monitor() 一直运行,直到用户通过键入零来停止它,exit_collecting()。
我下面的代码抛出了一堆回溯。我是这方面的新手,任何想法,任何帮助都会很棒。谢谢你。顺便说一句,我最初尝试使用“try with an except for KeyboardInterrupt”,但是当使用 IDLE(Spyder)时,ctrl-c 组合不起作用(分配给“copy”),当我使用 ctrl-c 时不起作用也可以从 Linux 的控制台运行它。
def exit_collecting():
try:
val = int(input("Type 0 to exit data collection mode"))
if val == 0:
flag = 0
except:
print(val,"typo, enter 0 to exit data collection mode")
def monitor():
import time
import psutil
flag = 1
while flag > 0:
time.sleep(1)
print("cpu usuage:",psutil.cpu_percent())
from multiprocessing import Process
p1 = Process(target=exit_collecting)
p1.start()
p2 = Process(target=monitor)
p2.start()
p1.join()
p2.join()
【问题讨论】:
标签: python while-loop parallel-processing python-multithreading keyboardinterrupt