【问题标题】:how do i run same python script for different inputs at different time in linux我如何在linux中的不同时间为不同的输入运行相同的python脚本
【发布时间】:2021-04-01 12:52:56
【问题描述】:

我有一个 python 脚本,一次只用于一个输入。我有一个输入列表,我希望这个 python 脚本在 Linux 中独立运行不同的输入。

假设这是我的脚本:

script.py with input "name1", 
list of inputs = ["name1", "name2"]

在脚本中使用 for 循环不能满足我的要求。 这可以使用子流程吗?还是另一个python文件中的for循环?如果是,那么如何? 我尝试使用另一个带有代码的 python 文件运行这个 script.py:

from subprocess import call

for i in range(len(list_inputs)): ???

   call(["python", "script.py"])

但是我如何给我的 script.py 提供输入,我也不想通过在终端上输入来提供输入

请建议我该怎么做?

【问题讨论】:

  • 恕我直言,最简单的方法是将参数传递给脚本:for param in list_inputs: subprocess.run(['/path/to/python', '/path/to/script.py', param])。然后在script.py中使用sys.argv获取参数。
  • 非常感谢...帮助很大。这正是我想要的!

标签: python linux subprocess


【解决方案1】:

您可以使用适当的输入在 python 中运行具有多处理功能的函数。就像传递函数参数一样。但请记住,由于它们的性质,您不能将全局变量传递给子进程(它们不与父子进程共享内存)。您可以在下面找到一个示例用法:

# Your desired function
def example_func(a, b, c):
    while True:
        print a
        print b
        print c

# Creating the child process
child_process = multiprocessing.Process(target=example_func, args=(a, b, c))

# Starting child process
child_process.start()

【讨论】:

  • 谢谢...但我必须运行一个 python 文件,而不仅仅是一个函数
  • 您可以为您的python文件定义一个运行器函数并相应地导入它以运行它。
猜你喜欢
  • 1970-01-01
  • 2019-03-07
  • 2022-01-04
  • 1970-01-01
  • 2014-11-28
  • 1970-01-01
  • 2021-02-02
  • 2019-07-09
  • 1970-01-01
相关资源
最近更新 更多