我想在后台长时间运行python脚本。基本上,我正在尝试制作一个生产力脚本,该脚本将在程序运行时强制关闭分散注意力的应用程序。例如,用户输入30分钟,然后在接下来的30分钟内,该程序将运行,并强制关闭Steam或Google Chrome之类的东西。
当前,我使用带有守护程序线程的while循环来工作,该线程不断检查正在运行的应用程序,并在需要时关闭一个应用程序:
while True:
p_tasklist = subprocess.Popen('tasklist.exe /fo csv',
stdout=subprocess.PIPE,
universal_newlines=True)
for p in csv.DictReader(p_tasklist.stdout):
if p['Image Name'] == 'myProgram.exe':
os.system('taskkill /im myProgram.exe')
但是很明显,这非常占用CPU资源(一个CPU核心的利用率为100%),我试图以某种方式设置事件侦听器,以侦听要打开的新程序,但到目前为止仍未成功。
我试图根据这项工作做出一些贡献:
while True
# listen for new program to be opened then run next block
if program == program_to_close:
close program
编辑:
为了防止人们过早地结束我的脚本,我需要尽快关闭不需要的程序。否则,脚本可以通过任务管理器结束,这对于那些缺乏自我控制能力的人来说,整个事情变得毫无意义。
编辑2:
任务管理器是我希望强制关闭的程序之一,而不是专门用于Steam的程序。我并不是要制造恶意软件或禁用某人的计算机,如果他们绝对需要退出,他们可以重新启动计算机。
最佳答案
您当前不断执行外部应用程序会消耗大量资源。从时间导入睡眠,并将sleep(1)或sleep(5)放入while循环中。这将减少您的CPU使用率。
就像是:
from time import sleep
...your imports...
while True:
p_tasklist........
if matches your criteria:
close program
sleep(number_of_seconds)