我想使用f2py
生成行为类似于python类的对象:它应该存储一段数据,这样数据只需传递一次。我最终希望拥有如下所示的python代码,其中myfortranmodule
是使用f2py
编译的模块。
from myfortranmodule import Analyzer
analyzer = Analyzer(bigvector)
for parameter in [0.0, 8.3, 10.2, ...]:
answer = analyzer.get_answer(parameter)
具体来说,我需要以这种方式进行结构化,因为
bigvector
是非常大的数据,只应传递一次,for循环中的参数列表很长(并且不能提前传递,因为它是在python中即时生成的),而get_answer
方法的计算量很大,因此应在fortran中完成。是否可以使用
f2py
构建此类类对象,或者将数据存储在fortran子例程中? 最佳答案
这只是为了确认使用通用块会满足您的需求。我实际上是从相反的角度偶然发现的。我想要一个干净的方法调用时就获得了数据持久性!
由于Fortran例程很长,因此通过从此处开始调用调用Fortran模块然后每次我想运行它时均multiprocessing.process
来解决该问题。这比重写Fortran删除公共块要简单得多。
q = mp.Queue()
cargs = (arg1, arg2, arg3)
p = mp.Process(target=module, args=(q, cargs))
p.start()
p.join()
result = q.get()
关于python - 我可以用f2py创建一个类吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27946075/