Woo*_*193 5 python scripting multiprocessing
我有一个Python脚本,它应该运行大量其他脚本,每个脚本都位于脚本工作目录的子目录中.这些其他脚本中的每一个都应该连接到游戏客户端并为该游戏运行AI.为了实现这一点,我必须在两个独立的线程上运行每个脚本(每个线程一个).我遇到的问题是有时脚本的输出没有被捕获.我的运行代码如下所示:
def run(command, name, count):
chdir(name)
output = check_output(" ".join(command), stderr = STDOUT, shell = True).split('\r')
chdir('..')
with open("results_" + str(count) + ".txt", "w") as f:
for line in output:
f.write(line)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它确实设法捕获更长的流,但短的流不被注意.如何更改代码以解决此问题?
更新:我不认为这是一个缓冲问题,因为check_output("ls ..", shell = True).split('\n')[:-1]
返回预期的结果,该命令应该比我试图运行的脚本花费更少的时间.
更新2:我发现输出正在削减更长的运行.事实证明,由于某种原因,我运行的所有进程都会错过输出结束.这也解释了为什么较短的运行根本不产生任何输出.
归档时间: |
|
查看次数: |
123 次 |
最近记录: |