我正在做一些生物信息學工作。我有一個python腳本,它在某個時刻調用一個程序來執行一個昂貴的過程(序列對齊......使用大量的計算能力和內存)。我使用subprocess.Popen調用它。當我在一個測試用例上運行它時,它會完成並完成正常工作。但是,當我在完整文件上運行它時,它將不得不多次爲不同的輸入集執行此操作,它會死亡。子拋出:使用子進程的Python內存分配錯誤.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位的Ubuntu 10.4
你能在獨立模式下執行程序子,從命令行?你可以啓動幾個實例將它們設置爲背景(使用'&終止命令)?如何運行'time -v foo ...'來獲得關於程序使用計算機資源的一些統計信息? – Apalala 2011-03-16 14:16:13