我如何退出一个脚本早,像die()命令在PHP?


当前回答

提前终止Python脚本的一个简单方法是使用内置的quit()函数。不需要导入任何库,而且高效简单。

例子:

#do stuff
if this == that:
  quit()

其他回答

问题

在我的实践中,甚至有一种情况需要从其中一个进程中杀死整个多处理器应用程序。

如果您的应用程序使用唯一的主进程,那么以下函数可以很好地工作。但是在我的例子中,下列函数没有一个不能工作,因为应用程序还有许多其他活动进程。

辞职() 退出(0) os._exit (0) sys.exit (0) Os.kill (os.getppid(), 9) -其中os.getppid()是父进程的pid

最后一个进程杀死了主进程和它自己,但其余进程仍然存活。

解决方案

我不得不通过外部命令杀死它,最后使用pkill找到解决方案。

import os

# This can be called even in process worker and will kill
# whole application included correlated processes as well
os.system(f"pkill -f {os.path.basename(__file__)}")

另一种方法是:

raise SystemExit

也可以简单地使用exit()。

请记住sys.exit(), exit(), quit()和os._exit(0)会杀死Python解释器。因此,如果它出现在execfile()从另一个脚本调用的脚本中,它将停止两个脚本的执行。

请参见“停止执行使用execfile调用的脚本”以避免这种情况。

只要把quit()放在代码的末尾,就可以关闭一个python脚本。

在Python 3.5中,我尝试在不使用模块(例如sys, Biopy)的情况下合并类似的代码,而不是使用内置的停止脚本并向用户打印错误消息的模块。以下是我的例子:

## My example:
if "ATG" in my_DNA: 
    ## <Do something & proceed...>
else: 
    print("Start codon is missing! Check your DNA sequence!")
    exit() ## as most folks said above

后来,我发现抛出一个错误更简洁:

## My example revised:
if "ATG" in my_DNA: 
    ## <Do something & proceed...>
else: 
    raise ValueError("Start codon is missing! Check your DNA sequence!")