Ошибка распределения памяти Python с использованием subprocess.Popen

Я занимаюсь биоинформатикой. У меня есть скрипт на 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

8
задан Community 23 May 2017 в 12:34
поделиться