擅长:python、mysql、java
<p>我对6年后的操作感到非常抱歉,没有人提到这是Unix中非常常见的问题,实际上与python或生物信息学无关。对os.fork()的调用将临时加倍父进程的内存(父进程的内存必须对子进程可用),然后将其全部丢弃以执行exec()操作。虽然这个内存并不总是被实际复制的,但是系统必须有足够的内存来允许它被复制,因此,如果您是父进程,它使用了超过一半的系统内存,并且您的子进程甚至输出了“wc-l”,那么您将遇到一个内存错误。</p>
<p>解决方案是使用posix_spawn,或者在脚本开始时创建所有子进程,而内存消耗很低,然后在父进程完成其内存密集型任务之后再使用它们。</p>
<p>使用keyworks“os.fork”和“memory”的google搜索将显示几个关于这个主题的堆栈溢出帖子,可以进一步解释发生了什么:)</p>