【问题标题】:How to execute a python file in another and then close after set time如何在另一个中执行python文件然后在设定时间后关闭
【发布时间】:2021-08-30 22:03:23
【问题描述】:

对于我正在编写的一些代码,我需要在另一个 python 文件中途执行一个 python 文件,然后在设定的时间后终止它。从我阅读和尝试的内容来看,将文件作为模块运行并不是可行的方法,因为在经过一段时间后我无法停止它。 (它需要被终止,否则它将无限期地等待输入)。有什么方法可以解决这个问题?

谢谢。

【问题讨论】:

  • 到目前为止你尝试过什么?请在解决问题方面表现出最小的努力,然后在尝试的解决方案中询问特定问题。见how to ask a good question
  • 超时后其他代码正在做某事怎么办?例如,如果它打开了一个文件怎么办?
  • 到目前为止,我尝试使用 OS 模块并将文件作为模块导入,我还查看了第一个 python 脚本中的多处理,但这对我不起作用其他一些模块,例如 pytimedinput,但由于我使用的是 NFC 阅读器并且不适用于该解决方案,因此不适合。
  • 而对于会发生什么,需要打开的脚本将检查卡是否在 NFC 读卡器上,如果将内容保存到文本文件中,在用例中的机会这种情况很少发生,但如果确实如此,那么代码将在循环中运行,并且很快就会重新激活,所以没关系。

标签: python


【解决方案1】:

听起来 subprocess 是你需要的:

import subprocess
import time

start = time.time()
TIME_TO_WAIT = 60
process = subprocess.Popen(["python", "otherScript.py"])

while True:
    if (time.time() - start) < TIME_TO_WAIT:
        cleanup(process)
        break

在清理中,您关闭打开的文件或您可能需要为干净退出执行的任何其他操作,然后最终调用

process.terminate()

process.kill()

这应该可以解决问题。

【讨论】:

  • 运行时出现此错误:process = subprocess.pOpen(["python", "test2.py"]) AttributeError: module 'subprocess' has no attribute 'pOpen'
  • 错字,应该是subprocess.Popen(...)。将修复答案。
  • 它在 Windows 上运行良好,但是在我将运行代码的树莓派上尝试它时,它将无法运行。有什么建议吗?
  • 嗯...几个问题:你确定你的 pi 上安装了 python 吗?如果是这样,可能命令是python3 而不是python(有别名的方法,但您可以先检查是否是问题所在)。然后,您可能还需要检查从哪里运行脚本以及子进程脚本相对于它的位置是否存在问题。最后,可能是这样的:stackoverflow.com/questions/55142480/…。但这就是我现在能想到的。
  • 我已经在调用中尝试了 python3 并将其设置为可执行文件,但没有成功,有没有办法将代码放在一个脚本中,调用它并在一定数量后终止它时间?
猜你喜欢
  • 2019-11-14
  • 2017-12-27
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
相关资源
最近更新 更多