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

2024-09-29 19:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个模块:caller_module.pyprogram_module.py。我需要通过caller_module.py来创建program_module.py的多个运行(以便在每次运行时获得不同的pythonhasheed)

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

问题:
如何动态创建不同的program_module.py运行,以及如何获取其输出(比较输出很容易)


Tags: 模块pyprogram动态创建modulecallerpythonhasheed
2条回答

您可以使用subprocess模块创建进程。它有一个名为check_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)})

我不完全清楚你想做什么,你需要什么样的论点,等等。但是作为第一个近似值,看看^{}。我猜你想要这样的东西:

import subprocess
import sys

output = subprocess.check_output([sys.executable, 'program_module.py'])

这基本上是使用当前Python可执行文件在当前目录中运行名为program_module.py的模块的最低代码。它应该大致类似于从命令行或控制台执行python program_module.py

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

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


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

相关问题 更多 >

    热门问题