我正在将csh脚本转换为python脚本。该脚本调用一个内存密集型可执行文件,它需要一个非常大的堆栈,因此csh脚本将stacksize设置为unlimited:
limit stacksize unlimited
当我试图用python重新生成这个脚本时,我以非常天真的方式执行它们,使用os.system
,例如:
os.system('some_executable')
但我不知道如何告诉操作系统运行这些堆栈大小不受限制的可执行文件。有没有办法为python脚本中的调用指定stacksize?有什么低级的系统调用需要我使用吗?有没有一个模块(类似于shuil)来控制这个?
您正在寻找Pythonsetrlimit接口,
resource.RLIMIT_STACK
。请注意,标准用户不能提高其硬限制,只有根(好吧,具有
CAP_SYS_RESOURCE
功能的进程(请参阅功能(7))进程可以提高其限制;因此,您可能需要使用PAM PAM_limits(8)limits.conf(5)
文件来提高所讨论用户的硬限制。如果需要,可以使用shell的(u)limit命令:
或者(可能更好)使用resource.setrlimit:
我对下面的代码有很好的经验。它不需要任何特殊的用户权限:
不过,它似乎并不适用于皮比。
相关问题 更多 >
编程相关推荐