python如何重新执行脚本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何重新执行脚本?相关的知识,希望对你有一定的参考价值。

如何退出当前正在执行的脚本,然后又重头开始,代码怎样写?

我也出现过这样的问题,如果在本脚本执行while的话,如果使用一些模块,有时候会出错。比如使用websocket的时候,(可能自己水平也不行,找了半天没发现出错的原因),后来放弃本脚本while。

我是这样解决的:

写一个脚本,如a.py,使用os.system(cmd)   (或是其他模块) 来运行b.py。

至于b.py什么时候退出,就看你自己了

PS:至于这样做是否会影响效率,因为程序小,就不在考虑范围内了

例:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# encoding: utf-8
import os

if __name__ == '__main__':
    while 1:
        cmd = 'python D:\\\\b.py'    #必须转义'\\'
        os.system(cmd)

参考技术A 如果你是想在执行一个脚本过程中,再从头开始执行,加个循环+continue就行了嘛。 参考技术B 用while为真时,控制整个脚本即可。亲测哦! 参考技术C 执行python脚本只需要对python文件做如下操作即可:
在python文件里第一行加上#! /usr/bin/python,即你的python解释器所在的目录。另外还有一种写法是#! /usr/bin/env python
编辑完成python脚本文件后为它加上可执行权限。
例如你的python脚本文件叫做runit.py,那么就在shell中输入如下命令:chmod +x runit.py
之后直接在shell中输入./runit.py就可以执行你的python程序了。
当然这是在Linux下的操作,如果想在windows下直接执行Python程序,就需要使用py2exe工具将python源程序编译成exe文件了。
参考技术D 请问你想要实现的功能是代码自己重启呢还是你去手动重启呢

如何使 PHP 永久运行脚本“忘记”一切并几乎像重新启动一样执行

【中文标题】如何使 PHP 永久运行脚本“忘记”一切并几乎像重新启动一样执行【英文标题】:How to make PHP permanently running script "forget" everything and perform almost as a restart 【发布时间】:2022-01-04 19:28:41 【问题描述】:

我有一个在服务器上永久运行的 PHP 脚本。我重新启动它的权限非常有限。有什么办法可以从内部重置脚本中的所有内容?我并不是要物理地停止和启动脚本。

我正在寻找一种几乎可以重新启动它的方法(unset() 所有变量,取消包含所有包含,“忘记”所有功能),就像重新启动脚本一样。

原因是至少在调试阶段能够“更新”脚本。在本地主机上,一切正常,但在服务器上存在一些问题,对于任何更改,我都必须致电服务台)。假设在包含中进行一些更改 - 然后再次包含它,这意味着初始化新函数,激活新变量....

我知道重新启动会更容易,更好,crone 会完成这项工作,但不幸的是没有选项......(愚蠢的情况,我知道 - 但我无法改变它,所以在我力所能及的范围内寻找解决方案)

想法是

<?
while (true) 
  require(myInclude.php);

  while (true)
    // here is the code I need to process, it is in endless loop as it serves as a websocket server
    doWhatIsNeeded(this_works_fine_no_need_to_adjust);

    // condition that starts all the "cleaning"
    if ($restartIsRequired == true)
      break;
    
  
  //unset all variables, un include all includes, "forget" all functions
  // **************************************************************
  // ****** here this is the part, I would like to help with ******
  // ******                     thank you :)                 ******
  // **************************************************************


【问题讨论】:

您似乎可以使用 cron 作业,但大多数时候有替代方案,我只是不明白,请您提供更多信息和实际代码。 “取消设置函数”到底是什么意思,为什么需要这样做?有点不清楚您要在这里解决的实际问题是什么。由于脚本永久运行,您面临什么具体问题? 谢谢大家,cron 将是完美的,不幸的是,在这种情况下它不是解决方案(愚蠢的情况)......实际代码(包括:)超过 8000 行......所以我有写在这里一些例子......谢谢@Noé和ADyson如果你有时间检查更新的问题,它可能会使情况更清楚。 好的。那么,正如您所描述的,您想在什么条件下“重置”或“更新”它?脚本如何知道是时候这样做了?你有什么样的访问权限......你可以在它定期检查的文件中设置一个值,或者在数据库或其他东西中设置一个值吗?除非你只是让它在一段时间后重置所有变量,否则你必须有某种方式向它发出信号。 当然,该脚本处理数千个 websocket 消息,因此其中之一是启动该消息的那个(或者我可以将其保存到数据库并每隔 1000000 次检查一次)......那不是一个问题:) 我知道如何取消设置所有变量,但不知道如何“取消定义”函数和取消包含...以便在新的循环中重新开始(感谢您的时间和兴趣@ADyson: ) 【参考方案1】:

这取决于你想用你的函数做什么,我需要更多信息来尝试和帮助更多。您似乎可以从使用诸如 cron 作业之类的调度程序中受益。

【讨论】:

以上是关于python如何重新执行脚本?的主要内容,如果未能解决你的问题,请参考以下文章

逐步运行编辑的python脚本/无需重新加载数据集

python+selenium 在执行测试脚本时,遇到错误如何能继续执行下去而不停止

如何使 PHP 永久运行脚本“忘记”一切并几乎像重新启动一样执行

通过 crontab 执行 Python 脚本

如何让Python脚本在cmd下执行

如何使 Python 脚本像 Linux 中的服务或守护程序一样运行