Python加速运算——"-O优化"和Cython

RakanLiu / 2024-10-29 / 原文

1. 以 release模式运行Python

python -O process_file.py

可以在代码中加入以下命令,判断是否为release模式:

if __debug__:
    print("Debug mode")
else:
    print("Release mode")

2.使用Cython

下载Cython:

pip install cython

编写pyx文件,即要编译的Python代码:

为了后面方便调用,你可以把需要运行的函数放到一个函数中,例如我放到了main()函数中

# process_file.pyx

# python -O process_file.py
import pandas as pd
from tqdm import tqdm

def clean_str(input:str)->str:
  # 辅助函数
  ......
  return output

def main():
  # 主函数
  ......
  ** = clean_str(*)
  ......


编写setup.py文件,使得 Cython 可以将我们的 Python 代码编译成 C 代码:

# setup.py
from setuptools import setup
from Cython.Build import cythonize


setup(
    ext_modules = cythonize('process_file.pyx')
)

接着,运行命令:

python setup.py build_ext --inplace

这样会生成build文件夹,.cpp文件,.pyd文件,其中,build文件夹.pyd文件是对你有用的;

你可以在Python代码中调用编译好的cython文件:

from process_file import main

main()