python 选择嵌入式语言

jmo0nnb3  于 2023-01-04  发布在  Python
关注(0)|答案(7)|浏览(99)

我正在制作一个应用程序,它使用几种不同的算法(代理)来分析一个或多个数据序列,我想到了一个想法,即每个代理都可以作为单独的Python脚本来实现,我可以在应用程序中使用Python C API或Boost.Python来运行这些脚本。
我有点担心运行时开销TBH,因为我正在做一些相当繁重的数据处理,我不想为每个模拟等待几分钟。我通常会进行数十万次迭代,如果不是数百万次的话,在这些迭代中我调用外部“代理”;我是更好的只是硬编码的一切在应用程序中,或将性能下降是可以容忍的?
另外,除了Python,我还可以使用其他解释语言吗?

yruzcnhs

yruzcnhs2#

Lua的速度相当快,因为它是,如果你需要更多的速度,尝试LuaJIT,这是优秀的。

pcww981p

pcww981p3#

Tcl从一开始就被设计成一种嵌入式语言。

yzckvree

yzckvree4#

我通常会进行数十万次(如果不是数百万次的话)的迭代,在这些迭代中我调用外部“代理”
性能下降将是明显的,也许是痛苦的,如果你能把数据放进数组,然后用NumPy批量处理,应该会快得多。
NumPy使得在一行中进行一百万次运算变得超级容易,例如,对数组的每个元素求平方如下:

>>> x = numpy.array([1, 2, 3, 4, 5, 6, 7])
>>> x**2
array([1, 4, 9, 16, 25, 36, 49])

超级简单,这里紧密的内部循环实际上是用C实现的。
当然,NumPy还可以做更高级的数字处理。

esyap4oy

esyap4oy5#

我相信tclRexx都是为了这个目的而设计的。

e5nszbig

e5nszbig6#

对于数百万次对python的调用(我假设是c++,因为你提到了boost),是的:你会注意到性能的下降。这可能很重要,也可能不重要--也许尝试新的“代理”所带来的速度增益会比下降更大。Python确实有快速的数值库(比如numpy),这可能会有所帮助,但是你仍然会产生数据编组、调用python、gil等的开销。
是的,您可以嵌入许多其他语言:请查看lua,也可以查看swig.org,它可以连接到除python之外的许多其他语言。

q7solyqu

q7solyqu7#

你可以使用C++模板和运算符重载来创建一个嵌入式语言,例如参见ublas或ftensor matrix languages。我不认为python或其他解释性语言适合进行数字运算/数据处理。

相关问题