在python中使用c语言
1.前言工作以后一直做AI领域的研究python在数据处理上我一直感觉很麻烦尤其是一直扎根在底层上对pyhton的数据架构感觉很不习惯尤其是最近做一个比赛就是数据清洗的项目。于是还是想把c语言的特性融入python里于是大概研究了一下怎么使用。网上常见的是将c转变为dll文件但是dll文件带来的开销非常大在少量使用时特点不明显而使用c的地方恰恰是数据大量交换的点这不相互矛盾吗后来发现还有另一种方法使用cython可以直接将c文件当做库文件嵌入pyhton里使用效率很高。2.环境我的python版本是3.13开发环境是pycharmpython这边我们需要安装有两个软件包cython和setuptools我们先下载MinGW-w64这是在windows下可以使用gcc的软件到官网下选择download选择这个项目然后跳转到github选择这个压缩包是win10和11的解压后是一个文件夹不要动里面的东西直接把整个文件夹找个合适的地方放即可之后我们需要配置环境变量选择用户环境变量的Path将刚刚的解压的文件夹下的bin文件夹放到环境变量里因为bin里面有gcc的编译器没有问题后我们打开电脑的终端输入gcc --version显示版本号就算安装完毕了3.C文件首先我们先写calc.c文件简单写一个阶乘#include calc.h // 加法实现 int add(int a, int b) { return a b; } // 阶乘实现 long long factorial(int n) { if (n 0) return -1; // 负数返回-1后续Python层封装异常 long long result 1; for (int i 1; i n; i) { result * i; } return result; }之后写一下头文件calc.h#ifndef CALC_H #define CALC_H // 加法函数 int add(int a, int b); // 阶乘函数 long long factorial(int n); #endif之后我们还需要写桥接文件命名为calc_wrapper.pyx# 声明要调用的C函数从calc.h导入 cdef extern from calc.h: int add(int a, int b) long long factorial(int n) # 封装为Python可调用的函数添加异常处理更符合Python习惯 def py_add(int a, int b): Python封装的加法函数 return add(a, b) def py_factorial(int n): Python封装的阶乘函数添加负数校验 if n 0: raise ValueError(n 必须是非负数) return factorial(n)之后编写编译配置文件 setup.pyfrom setuptools import setup, Extension from Cython.Build import cythonize import os # 1. 定义扩展模块核心配置 ext_modules [ Extension( namecalc_module, # 编译后生成的模块名Python导入用这个名字 sources[calc_wrapper.pyx, calc.c], # 要编译的文件CythonC compiler_directives{language_level: 3}, # 适配Python3 extra_compile_args[-O2], # 编译优化可选 ) ] # 2. 执行编译 setup( namecalc_module, ext_modulescythonize(ext_modules), # cythonize处理Cython文件 )把所有文件都放到pycharm工程下面4.编译之后我们开始编译在命令行里写入命令开始编译python setup.py build_ext --inplace这里有可能会报错“error:microsoft visual c 14.0 or greater is required”这里需要去visual studio安装环境勾选上c桌面开发选择msv v143这个选项其他的不重要全部搞定了再次编译成功后会多出两个文件5.python调用简单写一个测试文件# 导入编译后的扩展模块 import calc_module # 调用加法函数 print(2 3 , calc_module.py_add(2, 3)) # 输出2 3 5 # 调用阶乘函数 print(5! , calc_module.py_factorial(5)) # 输出5! 120 # 测试异常负数阶乘 try: calc_module.py_factorial(-1) except ValueError as e: print(异常, e) # 输出异常n 必须是非负数搞定6.结束语这次实验我结合了大模型以及网上的资料我喂给豆包的提示词如下如何在python使用c语言我现在的环境是windowspycharm介绍cython方法大家有更大的需要可以直接让AI为你介绍如何改每一步是什么作用。

相关新闻

2026高职统计与大数据分析学数据分析的技术价值与应用前景

2026高职统计与大数据分析学数据分析的技术价值与应用前景

数据分析在现代社会的核心地位数据驱动决策成为企业、政府及科研领域的核心手段,统计与大数据分析专业培养的技能直接匹配市场需求。高职统计与大数据分析的专业优势课程设计聚焦实战技能,涵盖数据清洗、可视化、机器学习基础等,缩短理论到实…

2026/6/23 14:11:56 阅读更多 →
Java SpringBoot+Vue3+MyBatis 爱心商城系统系统源码|前后端分离+MySQL数据库

Java SpringBoot+Vue3+MyBatis 爱心商城系统系统源码|前后端分离+MySQL数据库

摘要 随着互联网技术的快速发展,电子商务已成为现代商业活动的重要组成部分,尤其在移动互联网普及的背景下,线上购物平台的便捷性和高效性进一步推动了电商行业的繁荣。爱心商城系统作为一种结合公益与商业的创新模式,旨在通过线上…

2026/5/17 5:10:48 阅读更多 →
从“玩具项目“到“生产级架构“:Spring Boot + Spring Cloud + AI 微服务实战避坑指南

从“玩具项目“到“生产级架构“:Spring Boot + Spring Cloud + AI 微服务实战避坑指南

前言:最近帮公司把AI能力从单体应用迁移到微服务架构,踩了无数个坑。这篇文章不是Hello World,而是真实生产环境中的血泪总结。如果你也在考虑"怎么把ChatGPT接入Spring Cloud",建议先看完这篇再动手。一、为什么你的AI…

2026/7/5 10:50:15 阅读更多 →

最新新闻

PgBouncer 的 session 模式详解

PgBouncer 的 session 模式详解

1. 什么是 PgBouncer? PgBouncer 是一个轻量级的 PostgreSQL 连接池工具,主要用于管理和复用数据库连接,减少频繁建立和断开连接的开销,从而提升数据库性能和并发处理能力。 2. PgBouncer 的三种连接池模式 PgBouncer 支持三种主要的连接池模式,每种模式对应不同的会话…

2026/7/7 3:51:36 阅读更多 →
Linux内存Overcommit机制:三种策略、OOM Killer算法与cgroup限制行为的工程化分析

Linux内存Overcommit机制:三种策略、OOM Killer算法与cgroup限制行为的工程化分析

Linux内存Overcommit机制:三种策略、OOM Killer算法与cgroup限制行为的工程化分析 一、为什么Linux允许超额分配内存 物理内存是有限资源,但进程的内存请求远大于实际使用量。典型场景:进程malloc了1GB但只写了100MB,剩余900MB从未…

2026/7/7 3:49:35 阅读更多 →
移动端SoC选购避坑:3个关键参数(CPU/GPU/制程)解读与2024年芯片性能天梯图

移动端SoC选购避坑:3个关键参数(CPU/GPU/制程)解读与2024年芯片性能天梯图

移动端SoC选购避坑:3个关键参数(CPU/GPU/制程)解读与2024年芯片性能天梯图当你在手机卖场被各种"旗舰芯片""性能怪兽"的宣传语包围时,是否真正清楚这些参数背后的含义?本文将带你穿透营销迷雾&…

2026/7/7 3:49:35 阅读更多 →
小程序域名如何进行安全防护?一篇讲透

小程序域名如何进行安全防护?一篇讲透

随着小程序生态的快速发展,越来越多的企业将核心业务迁移到小程序上。然而,小程序同样面临着Web应用常见的各类安全威胁——SQL注入、XSS攻击、恶意爬虫、CC攻击、DDoS攻击等。那么,小程序的域名应该如何进行安全防护呢?本文将为你…

2026/7/7 3:47:35 阅读更多 →
AI 金融助手如何真正落地:ClaudeAPI 在银行业务里的应用思路

AI 金融助手如何真正落地:ClaudeAPI 在银行业务里的应用思路

银行业对 AI 的态度,正在从过去的“这个东西能不能用”,慢慢转向更现实的问题:怎么用才安全?怎么用才可控?出了问题能不能追溯?和普通聊天机器人相比,真正能在银行里跑起来的 AI 金融助手&#…

2026/7/7 3:47:35 阅读更多 →
红海云CEO孙伟为广东财经大学开展人力资源数智化转型专题讲座

红海云CEO孙伟为广东财经大学开展人力资源数智化转型专题讲座

广东财经大学人力资源管理专业为国家一流本科专业建设点、广东省综合改革试点专业。院系领导高度重视智能化浪潮下,人力资源专业学科建设和产教融合创新。7月3日,广东财经大学人力资源管理专业数字化专题培训走进红海云总部。红海云CEO孙伟受邀主讲&…

2026/7/7 3:43:34 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻