Python 创建程序的不同运行并使用其输出

Python 创建程序的不同运行并使用其输出,python,output,python-3.4,Python,Output,Python 3.4,假设我有两个模块:caller\u module.py和program\u module.py。我需要通过caller\u module.py创建许多运行program\u module.py(以便在每次运行时获得不同的pythonhasheed) 然后我需要使用program\u module.py在每次运行中创建的输出,并对其进行一些比较 问题: 如何动态创建不同运行的程序_module.py以及如何获取其输出?(比较输出很容易)我不完全清楚您想做什么,需要什么样的参数等等。但是作为第一个近

假设我有两个模块:
caller\u module.py
program\u module.py
。我需要通过
caller\u module.py
创建许多运行
program\u module.py
(以便在每次运行时获得不同的pythonhasheed)

然后我需要使用
program\u module.py在每次运行中创建的输出,并对其进行一些比较

问题:

如何动态创建不同运行的
程序_module.py
以及如何获取其输出?(比较输出很容易)

我不完全清楚您想做什么,需要什么样的参数等等。但是作为第一个近似值,请看一下。我猜你想要这样的东西:

import subprocess
import sys

output = subprocess.check_output([sys.executable, 'program_module.py'])
这基本上是使用当前Python可执行文件在当前目录中运行名为
program\u module.py
的模块的最低代码。它应该大致类似于从命令行或控制台执行
python程序_module.py

您可以将
check_output
调用包装在一个循环中,以便根据需要运行任意次数

请注意,这假设在您的配置中是一个合理的值



默认情况下,
check_output()
将返回被调用程序写入标准输出的任何内容。最简单的方法是通过内置函数。
print()
的内容是由
check\u output()
以字符串形式返回的,因此在上面的示例中我设置为
output
的变量就是您想要查看的内容。

您可以使用模块创建流程。它有一个名为的专用函数,允许您获取模块的标准输出
env
关键字允许您显式地为子流程设置哈希种子

import sys
import subprocess

outputs = {}
for hash_seed in xrange(1024):
    outputs[hashseed] = subprocess.check_output([sys.executable, 'program_module.py'], 
                                                env={'PYTHONHASHSEED': str(hash_seed)})

你看过这个模块了吗?@ig0774我花了大约15个小时试图了解如何使用
子流程
(以及其他可能的解决方案),但我还没有弄明白。关于我在这个模块中尝试做什么,还有更多的上下文。我删除了所有这些细节,因为首先我觉得观众并不真的需要它,其次观众不必费心阅读一堆文字。让我知道我是否应该恢复到这一点。您的答案成功地解决了如何创建不同的运行。您能详细介绍一下如何使
program\u module.py
创建输出吗?(假设
program_module.py
创建了一个我需要使用的dict)@user536231:查看我的编辑,但从编辑历史记录来看,您已经在做您需要做的事情了(即
print()
ing)