运行单独的文件。来自主脚本的时间

时间:2019-06-06 09:13:57

标签: python

我是python / programming的新手,我偶然发现了这个“问题”。
我想让我的主脚本多次运行一个单独的脚本,以这种方式获取我已经打开的所有进程,并有可能将其关闭。
我需要每次从我的主代码中指定一些变量,以便使这些进程分别运行,每个变量都有我在主文件上的终端指定的自己的“设置”。
你能指出我正确的方向吗?我需要阅读/搜索什么才能解决这些问题?

基本示例:

我的main.py文件将询问一个字符串,例如。 val = input("value: ")。我输入“你好”。

我的process.py文件将循环运行,打印“ hello”,直到我说停止为止。

当第一个进程正在运行时,我可以在主程序中指定另一个字符串。 val =“ bye”,process.py将再次以字符串“ bye”开头,而不会使用“ hello”关闭该字符串。

直到我指定如此,它们都必须运行。

,我也想列出一个孩子。运行process.py并带有其“规格”,并有可能例如关闭它们。并为其分配一个ID。

我做错了吗?有更好的方法吗?我一点也不知道。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可以使用不同的参数生成运行process.py脚本的子流程。

这些子进程将独立于父进程继续运行,或者您可以从main.py监视并杀死它们,看起来像这样。

main.py

import subprocess
import time

def spawn_process_py(arguments):
    args = [
          sys.executable,  # use the same Python this script is using
          'process.py',  # the script to run
    ] + list(arguments)
    return subprocess.Popen(args)


p1 = spawn_process_py(['hello'])
p2 = spawn_process_py(['ohai'])

time.sleep(5)  # wait for a bit
p1.terminate()  # kill process 1
time.sleep(5)  # wait for a bit
p2.terminate()  # kill process 2

您自然可以使用dict或数组来跟踪子流程,而不仅仅是将它们保留在p1p2之类的自由变量中。

process.py

import sys
import time

while True:
  print('Process.py:', sys.argv[1:])
  time.sleep(.2)

其他方法例如multiprocessing模块,它添加了进程间通信等,但这可以说是最简单的。