May 13, 2023
Ep 40. Rust 和 PyO3:让 Python 再次伟大 🦀 ❤️ 🐍
嘉宾 Messense 主播 laixintao 小白 Adam Wen laike9m 链接 PyO3 PyO3 有哪些应用? polars: Fast multi-threaded DataFrame library in Rust | Python | Node.js. pydantic-core: Core validation logic for pydantic written in Rust. cryptography: Python cryptography library with some functionality in Rust. orjson: Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy PyO3 前身:rust-cpython Maturin: Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages What Are Python Wheels and Why Should You Care? PEP 517 – A build-system independent format for source trees Ruff: An extremely fast Python linter, written in Rust. typos: Source code spell checker ChatGPT 写的 Rust 调用 Python C-API 的例子 use std::os::raw::{c_char, c_int}; use std::ffi::CString; use libc::{c_double, c_void}; #[link(name = "python3.8")] extern "C" { fn Py_Initialize(); fn Py_Finalize(); fn Py_BuildValue(format: *const c_char, ...) -> *mut c_void; } fn main() { unsafe { // 初始化 Python 解释器 Py_Initialize(); // 构建一个 Python 元组对象,并打印它 let x = 1.23 as c_double; let y = 4.56 as c_double; let format = CString::new("dd").unwrap().as_ptr(); let result = Py_BuildValue(format, x, y); let s = CString::from_raw(result as *mut c_char).into_string().unwrap(); println!("{}", s); // 关闭 Python 解释器 Py_Finalize(); } } pyo3-ffi: Python-API bindings for the PyO3 ecosystem 在 PyO3 里通过 allow_threads 关掉 Python GIL pybind11 — Seamless operability between C++11 and Python Cython CFFI: C Foreign Function Interface for Python. Interact with almost any C code from Python, based on C-like declarations that you can often copy-paste from header files or documentation. zig cc: a Powerful Drop-In Replacement for GCC/Clang wechatpy: 微信公众平台第三方 Python SDK OrbStack: Fast, light, simple Docker & Linux on macOS FancyWM - a dynamic tiling window manager for Windows 10/11 CSAPP: Computer Systems: A Programmer's Perspective APUE: Advanced Programming in the UNIX® Environment 提到的读书撕书的灵感来自于:李敖先生 吴恩达 prompt engineering 课程: ChatGPT Prompt Engineering for Developers Kiwi 浏览器