Python面试:使用Cython提升代码运行速度

1. 首先建立一个pyx文档。

main.pyx

python 复制代码
# 以下函数用于找出所有小于amount的质数
# python版本
def prime_finder_python(amount):
    primes = []

    found = 0
    number = 2
    while found < amount:
        for x in primes:
            if number % x == 0:
                break
        else:
            primes.append(number)
            found += 1
        number += 1
    return primes

# c版本
def prime_finder_optimized(int amount):
    cdef int number, x, found 
    cdef int primes[100000]

    amount = min(amount, 100000)

    found = 0
    number = 2
    while found < amount:
        for x in primes[:found]:
            if number % x == 0:
                break
        else:
            primes[found] = number
            found += 1

        number += 1

    return_list = [p for p in primes[:found]]
    return return_list

2. 接着建立一个setup

setup.py

python 复制代码
from setuptools import setup
from Cython.Build import cythonize

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

3. 在CMD中执行指令"python setup.py build_ext --inplace"

建立相应的c文档

成功后会生成两个文档"main.cp310-win_amd64.pyd"和"main.c"

4. 建立一个执行文档

test.py

python 复制代码
import main
import time

print(main.prime_finder_python(40))

5. 测试时间

python 复制代码
import main
import time

start_python = time.time()
main.prime_finder_python(20000)
end_python = time.time()

print(end_python - start_python)

start_c = time.time()
main.prime_finder_optimized(20000)
end_c = time.time()

print(end_c - start_c)

输出为:

3.2258031368255615

0.40691256523132324

我们可以看到,对于同一个函数,C版本的执行时间为Python版本的1/8,大大提升了代码运行速度。

相关推荐
程序猿编码5 分钟前
用C++从零开始造一个微型GPT,不借助任何第三方库
开发语言·c++·gpt·模型推理
博观而约取厚积而薄发6 分钟前
Pytest 从入门到精通,一篇就够(超详细实战教程)
python·测试工具·单元测试·自动化·pytest
imzed16 分钟前
使用 Playwright + Pytest 构建 Web UI 自动化测试框架
python·自动化·pytest
普通网友21 分钟前
pytest一些常见的插件
开发语言·python·pytest
苦瓜花26 分钟前
【Kotlin】初入门
android·开发语言·kotlin
时空系29 分钟前
Python 高性能高压缩打包器 —— 基于 JianPy 语义分析引擎
python
cndes1 小时前
给Miniconda换源,让包下载更迅速
开发语言·python
LuminousCPP1 小时前
C 语言集中实践全记录:顺序表 + 单链表原理实现与通讯录项目实战【附可运行源码】
c语言·开发语言·数据结构·经验分享·笔记
Metaphor6921 小时前
使用 Python 添加、隐藏和删除 PDF 图层
python·pdf·图层