1 hr 17 min

Ep 40. Rust 和 PyO3:让 Python 再次伟大 🦀 ❤️ �‪�‬ 捕蛇者说

    • Technology

嘉宾
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 浏览器

嘉宾
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 浏览器

1 hr 17 min

Top Podcasts In Technology

Lex Fridman Podcast
Lex Fridman
All-In with Chamath, Jason, Sacks & Friedberg
All-In Podcast, LLC
Acquired
Ben Gilbert and David Rosenthal
BG2Pod with Brad Gerstner and Bill Gurley
BG2Pod
The Neuron: AI Explained
The Neuron
TED Radio Hour
NPR