- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在“{”标记之前不允许使用函数定义
背景/应用程序/示例
我有一个使用f2py的N-Body探针求解器,它由多个函数组成(一个函数评估物体之间的力,其他函数通过RKF45积分微分方程)。
因为我发现很难让 f2py 在 Windows 下工作,并且我想要制作多平台 python 库,所以我尝试将其重写为 C 并根据本教程使用 scipy.weave http://wiki.scipy.org/PerformancePython
为了便于说明,我用更简单的微分方程 dA(t)/dt = -k*A(t) 进行了示例
from scipy import weave
from scipy.weave import converters
from pylab import *
n = 100
As = zeros(n);
def testODE(A, k, n):
code = r"for (int i=0; i<n; i++) { As(i)=A; A -= (double)k*(double)A; }"
return weave.inline(code, ['A','k','n','As'], type_converters=converters.blitz, compiler = 'gcc')
ks = arange(0.02,0.2,0.02)
for k in ks:
testODE( 10.0, k, n)
plot ( As );
show();
这工作得很好。我只是不确定 weave.inline() 调用是否会产生一些开销。
但是,如果我创建一个单独的函数来评估导数(例如 N 体问题中的力),则会出现错误在“{”标记之前不允许使用函数定义
def testODE_multiFunc(A, k, n):
code = r'''
double evalDerivatives(double a, double b){ return a*b; }
for (int i=0; i<n; i++) { As(i)=A; A -= evalDerivatives(k,A); }
'''
return weave.inline(code, ['A','k','n','As'], type_converters=converters.blitz, compiler = 'gcc', verbose=3)
最佳答案
以下是如何缓存已编译代码的说明:the weave catalog
如果您想内联复杂(多功能)C 代码,您可以在单独的头文件(例如 foo.h
)中定义函数,然后将其传递给对 内联
:
weave.inline(code, ['A','k','n','As'], headers=['"foo.h"'],
type_converters=converters.blitz)
请注意奇怪的引用。来自 docs :
headers : [str], optional A list of strings specifying header files to use when compiling the code. The list might look like ["","'my_header'"]. Note that the header strings need to be in a form than can be pasted at the end of a #include statement in the C++ code.
关于python - scipy.weave 对于更复杂的性能代码的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22270795/
我们非常感谢任何形式的帮助,因为我们正在疯狂地使用 C 语言使我们的程序变得更快。 获取的值不变,始终是0,0,0,0 这是在 Linux 中运行的代码: from scipy import weav
我在阅读有关 Spring 的工作原理时看到了这个术语,并且我刚刚阅读了有关 JPA 实现性能的文章,它具有以下统计信息: EclipseLink
我有集群,在 Raspberry pi 上有 10 个工作节点并且 master 正在 Ubuntu 16.04 上运行.一切似乎都运行良好,但有时在节点上运行的 pod 显示以下错误: Warnin
我试图在一个简单的项目中使用 AspectJ 而不使用 Spring,虽然我看到过类似的问题并且我的代码似乎是正确的,但我不明白为什么它不起作用。我使用的是Eclipse Oxygen 4.7.3(不
使用 weave.inline() 调用函数是否有任何开销与直接调用 native (C、Fortran)静态编译函数的比较?我担心 weave.inline() 在每次调用函数时都会编译代码(幸运的
我有 2 个虚拟机节点。两者可以通过主机名(通过/etc/hosts)或通过 IP 地址相互查看。已将 kubeadm 配置为 master。另一个作为工作节点。按照说明( http://kubern
我正在使用 weave 启动一些形成数据库集群的容器。通过执行以下操作,我已经在 EC2 中的两台主机上手动完成了这项工作: $HOST1> weave launch $HOST2> weave la
我在 python 中编织我的 c 代码以加速循环: from scipy import weave from numpy import * #1) create the array a=zeros(
我是一名 Python 新手,正在尝试学习一些关于这种出色的编程语言的知识。我试过使用 scipy.weave.inline 来加速一些计算。为了学习一点,我尝试使用 scipy.weave.inli
我最近升级到最新版本的 brian2,在运行神经模拟时开始看到以下警告: WARNING brian2.codegen.runtime.weave_rt.weave_rt.failed_compil
最近,我在使用 brian2 运行并行神经网络模拟时开始收到 SyntaxError。当尝试评估缓存文件中的代码行时,会通过调用 scipy.weave.inline 引发这些错误。 问题的完整描述以
我正在尝试使用 weave.blitz 来加速某些代码,但我不断收到以下 DLL 错误。如果我运行一个简单的代码,例如 from scipy import * # or from NumPy impo
此错误在我运行我的脚本时出现,而以前从未出现过。请问是不是版本问题 如果我输入 python -c "from scipy import weave; print weave._path_" 然后它给
我不熟悉将 C++ 代码嵌入到 Python 中。我正在测试 weave.inline。但是,在运行我的代码时出现段错误。有人能告诉我我做错了什么吗?这是我的代码: from scipy import
我在 Docker-Swarm 上使用 Weave 网络插件。 我创建了一个具有特定 IP 范围的 docker 网络,不同于默认的 Weave 网络,我从内部网络路由到该网络。 为了使容器更易于
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass类的一些代码示例,展示了WovenClass类的具体用法。这些代码示例主要来源于Github/
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClassListener类的一些代码示例,展示了WovenClassListener类的具体用法。这些
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass类的一些代码示例,展示了WovenClass类的具体用法。这些代码示例主要来源于Github/
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClassListener类的一些代码示例,展示了WovenClassListener类的具体用法。这些
本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass类的一些代码示例,展示了WovenClass类的具体用法。这些代码示例主要来源于Github/
我是一名优秀的程序员,十分优秀!