管道通信卡住了

时间:2017-10-03 11:31:29

标签: file pipe hang communicate

我正在打电话给Popen如下。是的,我需要shell = True。

f = tempfile.TemporaryFile(suffix = ".txt", prefix = "Result_", dir = tempfile.gettempdir(), delete = False)
pp = psutil.Popen(run, shell = True, stderr = f, stdin = subprocess.PIPE, stdout = subprocess.PIPE).

(data, err) = pp.communicate()

我的运行命令有点复杂但基本上它运行在函数下面,而函数又运行报告并写入文件。

def query():

pickledef = sys.argv[1:]
pickledef = ''.join(pickledef)
with open(pickledef, 'rb') as f:
    querydef = pickle.load(f)

results = run_report(report_def)
out_file_name = to_file(results)
sys.stdout.write('<FILENAME>' + out_file_name)

我正在循环中进行Popen调用,我打算批量运行多个查询。我尝试运行两个报告,它们运行得非常好,因为我看到文件是使用输出结果创建的。然而,由于一些未知的原因,该程序陷入困境(我认为在communication())。我知道如果预期的输出很大,通信并不是最佳选择,但我已经通过将结果写入文件来解决这个问题。所以我有点失去了为什么这不起作用。任何帮助表示赞赏。如果有什么事情不清楚,请告诉我。

由于

0 个答案:

没有答案