gpt4 book ai didi

python - 如何在不杀死 python 脚本的情况下停止它?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:10 27 4
gpt4 key购买 nike

我想知道是否有办法在运行时停止 python 脚本,而不杀死它。

例如,我知道 ctrl + z 或 c 会终止当前进程..但我不想终止程序..

我的 python 程序一次获取一个文件并执行一些作业..每个文件大约需要 10~20 分钟,具体取决于文件的大小.. 并且目录中有很多文件..

但有时我必须让它完成当前正在处理的文件 在当前文件之后立即停止程序,而不是在工作中途终止它。

我如何在 python 中执行此操作?如果可以的话,我想写这个 python 代码..

我试过了

if os.path.exists(filename)
sys exit(0)

但是这个,我必须在它运行时创建一个文件,这样当它到达那个文件时,它就会停止......但不是这样做......我想看看是否有更好的方法来停止它。

最佳答案

but sometimes I have to let it finish the file that it is currently working on stop the program right after that current file instead of killing it in the middle of the work.

这比 Ctrl+Z 更具体;您要求停止该程序,但不是立即停止。您可以为此使用信号。使用 signal 设置信号处理程序,并在命令行使用 kill -SIGWHATEVER 调用它。一般来说,信号处理程序应该只设置一个您定期检查的标志;它本身实际上不应该“做任何事情”,因为您不知道程序在被调用时处于什么状态。

信号处理程序是在您的程序接收到信号时调用的函数。它们是使用 signal.signal() 设置的.信号与 kill 程序或 kill() 系统调用一起发送。您的处理程序将如下所示:

stop = False
def handler(number, frame):
global stop
stop = True
signal.signal(signal.SIGUSR1, handler)
for file in files: # or whatever your main loop looks like
# Process one file
if stop:
break

关于python - 如何在不杀死 python 脚本的情况下停止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29100568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com