Я занимаюсь биоинформатикой. У меня есть скрипт на Python, который в какой-то момент вызывает программу для выполнения дорогостоящего процесса (выравнивание последовательностей ... требует много вычислительной мощности и памяти). Я называю это с помощью subprocess.Popen. Когда я запускаю его на тестовом примере, он завершается и заканчивает нормально. Однако, когда я запускаю его в полном файле, где ему придется делать это несколько раз для разных наборов входных данных, он умирает. Подпроцесс выбрасывает:
OSError: [Errno 12] Cannot allocate memory
Я нашел несколько ссылок здесь и здесь и здесь с аналогичными проблемами, но я не уверен, что они применимы в моем случае.
По умолчанию выравниватель последовательностей пытается запросить 51000 МБ памяти. Он не всегда так много использует, но может. Когда все входные данные загружены и обработаны, этого многого нет. Однако ограничение количества, которое он запрашивает или будет пытаться использовать на меньшем количестве, которое может быть доступно при запуске, по-прежнему дает мне ту же ошибку. Я также пробовал работать с shell = True и тем же самым.
Вот уже несколько дней меня это беспокоит. Спасибо за любую помощь.
Edit: Расширение трассировки:
File "..../python2.6/subprocess.py", line 1037, in _execute_child
self.pid=os.fork()
OSError: [Errno 12] Cannot allocate memory
вызывает ошибку.
Edit2: Запуск в python 2.6.4 на 64-битной ubuntu 10.4