2013-04-30 3 views
1
prules=subprocess.check_output("perl ruleFinder.pl "+datasetfile+" "+myrulepath, shell=True)##call a different program to produce a list of rules that predict contact 

이 코드를 사용하여 다른 프로그램을 호출하고이 프로그램에서 생성 된 데이터를 가져옵니다. 이 작업을 사용하는 데는 약 1 분 정도 소요됩니다. 사용할 수있는 더 효율적인 기능이 더 빠릅니까?subprocess.check_output faster way

+1

셸 (또는 명령 프롬프트)에서 동일한 명령을 실행하는 데 시간이 얼마나 걸립니까? subprocess.check_output()이 병 목인지 확실합니까? –

+1

정말'shell = True'를 사용하고 있습니까? 특히 파일 이름에 공백이 있으면 많은 문제가 발생합니다. 'subprocess.check_output ([ 'perl', 'ruleFinder.pl', datasetfile, myrulepath])를 시도 했습니까? – glglgl

+0

'shell = True'에 대해서는 동의합니다. 인수 목록을 전달하는 것이 훨씬 깔끔합니다. –

답변

4

subprocess.check_output은 단순히 다른 프로세스를 시작하고 완료되기를 기다립니다. 시간이 좀 걸리지 만, 실행 시간은 subprocess.check_output이 아닙니다. 시간은 다른 프로세스를 실행하는 데 소요됩니다. 일을 빠르게하는 유일한 방법은 다른 프로세스를 빠르게하는 것입니다.