python中由于堆栈大小不足而导致dll加载错误?

2024-06-02 04:37:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 代码import程序堆栈数组线程例程dll
2条回答

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

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

ALLOCATE关键字是如何在Fortran 90中创建堆分配的数据。但是,许多编译器都有在堆上分配数组的选项,这可能是目前最方便的方法。在

visualstudio(也许还有windowsdk)附带了一个名为EDITBIN的实用程序,这正是您想要的。请参阅http://msdn.microsoft.com/en-us/library/xd3shwhf%28v=vs.71%29.aspx以获取参考。在

要检查堆栈大小,请使用

dumpbin /headers python.exe

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

^{pr2}$

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

相关问题 更多 >