1

我的模块子流程有问题;我正在从 Python 运行一个脚本:

subprocess.Popen('./run_pythia.sh', shell=True).communicate()

有时它只是阻塞并且没有完成执行脚本。之前我是用.wait()的,后来换成了.communicate()。尽管如此,问题仍在继续。

首先脚本编译几个文件,然后执行成一个文件:

run_pythia.sh

#!/bin/bash
#PBS -l walltime=1:00:00

./compile.sh
./exec > resultado.txt

compile.sh

O=`find ./ -name "*.o" | xargs`

# LOAD cernlib2005
module load libs/cernlib/2005

# Compile and Link
FC=g77
CERNLIBPATH="-L/software/local/cernlib/2005/lib -lpacklib"

$FC call_pyth_mix.f analise_tt.f $O $CERNLIBPATH -o exec
4

2 回答 2

3

你执行的脚本,是否run_pythia.sh保证执行完毕?如果没有,您可能不想使用像communicate(). 您可能希望自己研究与返回的进程句柄的 、 和 文件句柄进行交互.stdout.stderr.stdin非阻塞方式)。

此外,如果您仍想使用communicate(),则需要已将subprocess.PIPEobject 传递给Popen的构造函数参数。

阅读模块上的文档以获取更多详细信息。

于 2010-05-04T23:49:30.660 回答
0

也许您可以尝试对其进行跟踪:

import pdb; pdb.set_trace()
于 2010-05-05T10:01:11.127 回答