Python Cython简单使用

  • 安装Cython
    pip install Cython
  • 使用演示
    • 编写Cython版本代码, 文件名:fib_cy.pyx
      cpdef int fib_cy(int n):
          if n <= 1:
              return n
          else:
              return fib_cy(n-1) + fib_cy(n-2)
    • 编写Python版本代码,文件名:fib.py
      def fib(n):
          if n <= 1:
              return n
          else:
              return fib(n - 1) + fib(n - 2)
    • 编写Cython编译步骤文件,文件名:setup.py
      from Cython.Build import cythonize
      from setuptools import setup
      
      setup(
          ext_modules=cythonize("./fib_cy.pyx"), # cython版本代码路径
      )
    • 编译cython版本代码
      python setup.py build_ext --inplace
      
      # 编译完之后,会生成fib_cy.c文件、fib_cy.xxxx.so文件和一个build文件夹。
      # 其中.so文件就是要被python导入使用的文件。
    • 编写性能测试文件,文件名:test_fib.py
      import timeit
      from fib import fib
      from fib_cy import fib_cy # type: ignore,这里的意思是从fib_cy.xxx.so中导入fib_cy函数,跟python模块导入一样的。
      
      n = 35  # 选择一个较大的数以便观察时间差异
      
      # 测试纯 Python 版本
      py_time = timeit.timeit(f"fib({n})", globals=globals(), number=1)
      print(f"Pure Python version took: {py_time:.4f} seconds")
      
      # 测试 Cython 版本
      cy_time = timeit.timeit(f"fib_cy({n})", globals=globals(), number=1)
      print(f"Cython version took: {cy_time:.4f} seconds")
      
      print(f"Speedup: {py_time / cy_time:.2f}x")
    • 执行性能测试
      python test_fib.py

       

 

posted @ 2025-09-23 11:41  CJTARRR  阅读(9)  评论(0)    收藏  举报