Python:在Amazon AWS上的脚本内运行可执行文件的内存错误

时间:2014-02-05 20:56:17

标签: python linux memory amazon-ec2 cloud

我正在尝试将一系列python脚本从hpc集群移动到亚马逊云。我有一个需要从脚本中调用的可执行文件。我总是使用os.system来做这件事,但是当它在云中运行时它不起作用,我认为它可能已被弃用。无论如何,它似乎不是处理这个的首选方式,所以我切换到subprocess.call。如果我在shell提示符下键入它,我给出的命令行可以工作:

$needle  -outfile=../test.txt_results/Output/Needlescores/OG5_126737_Am_ac_Acasneedle.txt -asequence=../test.txt_results/Temp/Am_ac_Acasseq1.fasta -bsequence=../test.txt_results/Temp/Am_ac_Acasseq2.fasta -gapopen=10 -gapextend=0.5

如果我打开python解释器并使用subprocess.call:

,它就可以工作
>>> call('needle  -outfile=../test.txt_results/Output/Needlescores/OG5_126737_Am_ac_Acasneedle.txt -asequence=../test.txt_results/Temp/Am_ac_Acasseq1.fasta -bsequence=../test.txt_results/Temp/Am_ac_Acasseq2.fasta -gapopen=10 -gapextend=0.5',shell = True)

但是,如果我从我的脚本中运行它,我会收到错误:

OSError: [Errno 12] Cannot allocate memory

我进入脚本并将调用更改为调用('ls',shell = True)并且它仍然给了我相同的错误,因此我认为它与使用太多内存的可执行文件无关。

  File "/home/ubuntu/Scripts/Taxon/__init__.py", line 541, in runneedle
    child = subprocess.call('ls', shell = True)
  File "/usr/lib/python2.7/subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1143, in _execute_child
    self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory

我四处寻找有类似错误的人,并且有一个非常技术性的(对于我没有经验的眼睛)关于叉子的答案 - 但它似乎不足以帮助我,我不知道我会怎么做处理这样的事情,特别是在EC2实例中。

有没有人遇到过这个问题 - 并且找到了解决方案 - 或者是否有人为在Linux和云端工作的新手提供建议?

0 个答案:

没有答案
相关问题