无限期运行python脚本

无限期运行python脚本,python,Python,我有一个类似这样的python脚本- import.. def main (): some_condition check main() #calling main again some condition check main() #calling main again main() 这里的想法是让脚本无限期地运行并检查某些内容。 这种调用main()的方法似乎不正确。 我对Python脚本非常陌生。如果这非常低效,有人能指导我吗?如果是,那么我该如何实现这一点?您所做的就是

我有一个类似这样的python脚本-

import..
def main ():
  some_condition check
  main() #calling main again
  some condition check
  main() #calling main again
main()
这里的想法是让脚本无限期地运行并检查某些内容。 这种调用main()的方法似乎不正确。
我对Python脚本非常陌生。如果这非常低效,有人能指导我吗?如果是,那么我该如何实现这一点?

您所做的就是所谓的递归。这对于长时间运行的应用程序肯定不好,因为它会导致堆栈溢出

您的检查方式如下:

quit = False
while not quit:
   do_your_check()
   #maybe sleep
   quit = should_i_stop()

你所做的就是所谓的递归。这对于长时间运行的应用程序肯定不好,因为它会导致堆栈溢出

您的检查方式如下:

quit = False
while not quit:
   do_your_check()
   #maybe sleep
   quit = should_i_stop()

把你想做的事情放在一个真实的循环中

import ...
def main():
  while True:
    some_condition check

当作为迭代代码编写过于复杂/困难时,可以使用递归。e、 树遍历。

只要把你想做的事情放在一个真正的循环中

import ...
def main():
  while True:
    some_condition check

当作为迭代代码编写过于复杂/困难时,可以使用递归。e、 g.树遍历。

什么是错误的?你到底想要什么?相关:我不认为你想要这里的重现,比如
defmain():dou stuff
then
,而True:some\u check;main()
et.cAgree和@Chris\u Rands。递归在很多方面都不好(内存、代码可读性等)。要是python有尾部递归就好了。。无论如何,使用“while True”语法。@AttilaBognár没有任何错误。我只是想知道正确的方法。正如有人指出的,无限期地运行它会导致堆栈溢出,而不是从main调用main,我可以使用while true:)什么是错误的?你到底想要什么?相关:我不认为你想要这里的重现,比如
defmain():dou stuff
then
,而True:some\u check;main()
et.cAgree和@Chris\u Rands。递归在很多方面都不好(内存、代码可读性等)。要是python有尾部递归就好了。。无论如何,使用“while True”语法。@AttilaBognár没有任何错误。我只是想知道正确的方法。正如有人指出的,无限期地运行它会导致堆栈溢出,而不是从main调用main,我可以使用while true:)谢谢!这就是我想要的——“它会导致堆栈溢出”。退出脚本,然后重新启动将避免堆栈溢出?是的,这会起作用。堆栈溢出会发生,因为在调用函数时,调用函数的上下文保存在堆栈上,因此当被调用函数返回时,它可以继续,因为您永远不会返回,最终您的计算机将耗尽内存。此时操作系统将停止程序。谢谢!这就是我想要的——“它会导致堆栈溢出”。退出脚本,然后重新启动将避免堆栈溢出?是的,这会起作用。堆栈溢出会发生,因为在调用函数时,调用函数的上下文保存在堆栈上,因此当被调用函数返回时,它可以继续,因为您永远不会返回,最终您的计算机将耗尽内存。此时操作系统将停止程序。