由于堆栈大小不足,在python中加载错误?

时间:2011-04-11 06:40:01

标签: python fortran

我有一个python代码,用于导入由f2py创建的dll(来自fortran例程)。现在,如果fortran中的数组太大,python程序就会崩溃。我该如何处理?通过增加堆栈大小?还是堆?我试图研究这个问题,但我仍然不明白我如何增加堆栈,或者我应该使用堆而不是我应该怎么做.. ??? Python总是在我尝试导入dll的行上崩溃,即在“import f90_routine”行。有人还提到了线程,但我不知道如何使用它们。希望有人可以帮助我!!

2 个答案:

答案 0 :(得分:2)

您的基本问题是您在堆栈中存储大量数据。这是糟糕的设计,可能是由于Fortran代码的实现方式。

大型数组需要存储在堆上并在那里动态分配。要解决此问题,您需要相应地理解和修改Fortran代码。

ALLOCATE关键字是在Fortran 90中创建堆分配数据的方式。但是,许多编译器都有选项可以在堆上分配数组,这可能是目前最便捷的路径。 / p>

答案 1 :(得分:0)

Visual Studio附带了一个名为EDITBIN的实用程序(也可能是Windows SDK),这正是您想要的。请参阅http://msdn.microsoft.com/en-us/library/xd3shwhf%28v=vs.71%29.aspx以供参考。

要检查堆栈大小,请使用

dumpbin /headers python.exe

并在“可选标题值”下查找“堆栈保留的大小”。

editbin /stack:size_in_bytes python.exe

请注意,您必须将修改后的Python.exe分发给所有想要运行代码的人。