일부 생물 정보학 작업을하고 있습니다. 파이썬 스크립트를 가지고있어서 값 비싼 프로세스를 수행하는 프로그램을 호출합니다 (시퀀스 정렬은 많은 계산 능력과 메모리를 사용합니다). 나는 subprocess.Popen을 사용하여 그것을 부른다. 테스트 케이스에서 실행하면 완료되고 정상적으로 완료됩니다. 그러나 여러 파일 세트에 대해이 작업을 여러 번 수행해야하는 전체 파일에서 실행하면 파일이 종료됩니다. 서브 프로세스를 사용한 파이썬 메모리 할당 오류
OSError: [Errno 12] Cannot allocate memory
나는 비슷한 문제로 몇 가지 링크를
here 및
here 및
here을 찾았지만, 나는 그들이 내 경우에 적용하는 것이 확실하지 않다 : 하위 프로세스가 발생합니다.
기본적으로 시퀀스 정렬 기는 51000M의 메모리를 요청하려고 시도합니다. 그것은 항상 그렇게 많이 사용하지는 않지만, 그렇게 할 수도 있습니다. 전체 입력을로드하고 처리하면 그만큼 사용할 수 없습니다. 그러나 요청할 때 사용량을 줄이거 나 사용량을 줄이면 실행 중에도 여전히 동일한 오류가 발생합니다. 나는 또한 shell = True와 같은 것을 실행 해 보았습니다.
이것은 며칠 동안 나를 괴롭 히고 있습니다. 어떤 도움을 주셔서 감사합니다.
편집 : 역 추적을 확장 :
File "..../python2.6/subprocess.py", line 1037, in _execute_child
self.pid=os.fork()
OSError: [Errno 12] Cannot allocate memory
오류가 발생합니다.
Edit2가 : 64 비트 우분투 10.4
에 무슨 일이 일어나고 있는지 설명 할 수있는 주제에 대한 여러 스택 오버플로 게시물을 표시합니다 명령 줄에서? 여러 인스턴스를 백그라운드로 설정하여 실행할 수 있습니까 (명령을'&'로 끝내기)? 프로그램의 컴퓨터 자원 사용에 대한 통계를 얻기 위해'time -v foo ... '를 실행하는 것은 어떻습니까? – Apalala