Я занимаюсь биоинформатикой. У меня есть сценарий Python, который в какой-то момент вызывает программу для выполнения дорогостоящего процесса (выравнивание последовательностей .. использует много вычислительных ресурсов и памяти). Я называю это с помощью subprocess.Popen. Когда я запускаю его на тестовом примере, он завершается и заканчивается нормально. Однако, когда я запускаю его для полного файла, где он должен был бы делать это несколько раз для разных наборов входных данных, он умирает. Броски подпроцесса:
OSError: [Errno 12] Cannot allocate memory
Я нашел несколько ссылок здесь и здесь и здесь на похожие проблемы, но я не уверен, что они применимы в моем случае.
По умолчанию выравниватель последовательности попытается запросить 51000 МБ памяти. Это не всегда так много, но это возможно. С полным входом загружен и обработан, это многое не доступно. Однако ограничение количества, которое он запрашивает или попытается использовать при меньшем количестве, которое может быть доступно при запуске, все равно вызывает ту же ошибку. Я также попытался запустить с shell = True и то же самое.
Это беспокоило меня уже несколько дней. Спасибо за любую помощь.
Редактировать: Расширение трассировки:
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