首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在退出Python程序时打开另一个程序?

如何在退出Python程序时打开另一个程序?
EN

Stack Overflow用户
提问于 2013-07-27 09:27:25
回答 3查看 206关注 0票数 1

我有一个程序,需要一些清理后,退出,并已编写了一个独立的.py文件。但是,我使用的程序在一个部分处于无限循环中:

代码语言:javascript
运行
AI代码解释
复制
pythoncom.PumpMessages()

正因为如此,没有“自然”关闭的程序。唯一的方法是结束任务管理器的过程。

因此,我问:在任务管理器结束后,是否有办法自动运行我清理好的python脚本?

编辑:--我可以以一种不同的方式将它放入一个无限循环中,例如,如果它有帮助的话:

代码语言:javascript
运行
AI代码解释
复制
while True:
    pythoncom.PumpWaitingMessages()
EN

回答 3

Stack Overflow用户

发布于 2013-07-27 09:43:55

下面是我的项目的样本:

代码语言:javascript
运行
AI代码解释
复制
import signal

def term(*args,**kwargs):
    sys.stderr.write('\nStopping...')
    do_cleaning_stuff_here()

signal.signal(signal.SIGTERM, term)
signal.signal(signal.SIGINT, term)
signal.signal(signal.SIGQUIT, term)
yuor_main_code_here()

具有无限循环:

代码语言:javascript
运行
AI代码解释
复制
import signal

def term(*args,**kwargs):
    global running
    sys.stderr.write('\nStopping...')
    running=False

signal.signal(signal.SIGTERM, term)
signal.signal(signal.SIGINT, term)
signal.signal(signal.SIGQUIT, term)
running=True
while running:
    handle()
cleanup()

windows信号转换为unix等效。

票数 3
EN

Stack Overflow用户

发布于 2013-07-27 09:46:22

您可以从单独的python脚本中运行这两个脚本,并在运行第二个脚本之前终止第一个进程。

例如,使用subprocess.Popen:

代码语言:javascript
运行
AI代码解释
复制
 proc1 = subprocess.Popen(cmd, shell = True)
 time.sleep(waititme) #or other flag, such as reading another source
 proc1.kill() 
 proc2 = subprocess.Popen(cmd2, shell = True)
票数 3
EN

Stack Overflow用户

发布于 2013-07-27 09:42:19

在unix中,当您杀死一个进程时,您会向它发送一个信号。例如,CTRL会导致发送给程序的信号.

在windows上,一些信号被仿真,包括CTRL。如果您的循环没有调用阻止CTRL信号的函数,那么您可以按下CTRL来终止该循环。您是否可以尝试使用CTRL来终止您的程序,而不是通过任务管理器来完成它?

如果是这样的话,您可以编写一个处理程序来捕获CTRL信号,清理程序状态和sys.exit()

下面是捕获信号的代码:How do I capture SIGINT in Python?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17900585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档