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