我在 python 中有一个很长的函数,我想将其拆分为几个函数以提高可读性。因此,这些部件仅从程序中的一个点被调用,但非常频繁。
这会降低性能,因为函数调用非常昂贵。
有没有一种方法既能保持不分割的性能,又能提高可读性/可维护性?
除了numba类似的 JIT 编译器(保留自己的内联缓存)之外,这可能会帮助您进行 JIT 代码重用,正如您在未指定函数的多次重新调用中所指出的那样,有多种方法可以内联到 Python 代码中。
ASM汇编语言内联到pythonfrom pyasm import Program
from pyasm.data import String
from pyasm.macro import syscall
from pyasm.instructions import mov, ret, push, add
from pyasm.registers import eax, ebx, ecx, edx, ebp
import sys
def example():
msg = 'Hello World!'
prog = Program( # _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#
### ASSUME NOTHING - a lovely ASM note to always remember & self.remind
mov(ebx, 1),
mov(ecx, String(msg)),
mov(edx, len(msg)),
syscall('write'),
ret(),
# _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
)
fun = prog.compile()
fun()
if __name__ == '__main__':
example()
Run Code Online (Sandbox Code Playgroud)
c语言到pythonfrom pycca.cc import CCode, Function, Assign, Return
code = CCode( [ Function( 'int', 'add_one', [( 'int', 'x' )],
[
Assign( x='x + 1' ),
Return('x')
])
])
print code.dump_asm()
print "3 + 1 = %d" % code.add_one( 3 )
Run Code Online (Sandbox Code Playgroud)
c语言进入python(自2001年起)import PyInline, __main__
m = PyInline.build( language = "C",
targetmodule = __main__,
code = """
/*_______________________________WORLDS-OF-C*/
double my_C_adder( double a, double b )
{
return a + b;
}
/*_______________________________WORLDS-OF-C*/
"""
)
print my_C_adder( 4.5, 5.5 ) # Should print out "10.0"
Run Code Online (Sandbox Code Playgroud)