서브 프로세스를 사용하여 다른 프로그램을 호출하고 리턴 값을 변수에 저장합니다. 이 과정은 루프에서 반복, 몇 천 시간 후 프로그램은 다음 오류와 함께 추락이 문제를 해결하는 방법파이썬 서브 프로세스 : 너무 많은 파일 열기
Traceback (most recent call last):
File "./extract_pcgls.py", line 96, in <module>
SelfE.append(CalSelfEnergy(i))
File "./extract_pcgls.py", line 59, in CalSelfEnergy
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
File "/usr/lib/python3.2/subprocess.py", line 745, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.2/subprocess.py", line 1166, in _execute_child
errpipe_read, errpipe_write = _create_pipe()
OSError: [Errno 24] Too many open files
어떤 생각이 많이 감사합니다! 댓글에서 제공
코드 :
cmd = "enerCHARMM.pl -parram=x,xtop=topology_modified.rtf,xpar=lipid27_modified.par,nobuildall -out vdwaals {0}".format(cmtup[1])
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()
Communicate()가 파이프를 닫으므로 문제가되지 않습니다. 결국, Popen()은 파이프가 부족할 때 실행되는 명령입니다 ... 다른 파일이 열려있는 상태에서 코드의 다른 부분에 문제가있을 수 있습니다. "SelfE.append"... 다른 파일을 열어 목록에 보관하고 있습니까? – tdelaney