It is a toy project for Python and Rust!
Project description
项目介绍
这是一个 Python 和 Rust 混合编程的项目,主要目的是比较 Rust 和 Python 的性能差异。目前这个项目是 rshare,我们 在项目中通过 PYO3 和 Maturin 来将 Rust 代码包装到 Python 中,以使得用户可以通过 Python 代码来调用 Rust 写的函数。当然其中是有性能损失的。
目前在此版本中实现对 Rust 中调用 Python 代码,以使用利用 Rust 生成二进制文件的方式对 Python 代码进行加密的效果!
说明
目前已经支持 64 位操作系统,包括 Windows,Linux,macOS 和 ARM64 架构的 Linux 系统。
安装
通过 pip install rshare --upgrade -i https://pypi.org/simple
来安装 rshare
体验 Rust 的极致性能!
使用
安装依赖库
请先确认是否在本地安装以下依赖库
pip install numpy rshare talib
注意其中 talib 的安装需要参考:ta-lib-python
运行测试代码
import time
import numpy as np
import rshare as rk
import talib
data_num = 100000000 # 调整此数值
data_np = np.random.rand(data_num)
timeperiod = 10
# Rust 和 C 对比
start_py = time.time()
result_talib = talib.SMA(data_np, timeperiod)
end_py = time.time()
print(f"基于 C 语言的 TA-Lib 耗时: {end_py - start_py} seconds")
start_py = time.time()
result_np_rs = rk.calculate_moving_average_rs(data=data_np, window_size=timeperiod)
end_py = time.time()
print(f"基于 Rust 的耗时: {end_py - start_py} seconds")
可以通过调整 data_num 数值来设置不同的数据量,从而比较性能差异!
构建
maturin build # 会创建一个可以分发的轮子包,但不会安装它。
maturin build --release # 创建的轮子包是为发布准备的,具有更高的性能,但编译时间更长。
maturin develop # 非优化插入 Python 环境
maturin develop --release # 优化插入 Python 环境
Python 测试
import rshare as rk
rk.fetch_title("https://www.baidu.com")
版本说明
目前主要是说明开发的软件版本:
- Python 3.12.1
- Rust 1.76
注意事项
需要重新编译部分内容
更新
- 推送到 main 分支
- 修改
Cargo.toml
中的版本号 - 打标签:
git tag v0.1.x
- 通过推送标签进行升级:
git push origin tag v0.1.x
镜像推送
- 基于原始镜像:
ghcr.io/rust-cross/manylinux2014-cross:aarch64
docker build -t jindaxiang/newopen .
docker tag local-image:tagname jindaxiang/new-repo:tagname
docker push jindaxiang/new-repo:tagname
查看
贡献代码
关注 .vscode
用于 debug 代码,新增 .vscode 文件夹
Python 环境设置
利用 conda 创建虚拟环境,此处注意 Python 的版本,默认安装 conda 源中最新本的 Python
conda create -n rshare python
进入环境
conda activate rshare
pip install maturin
python -m pip install TA-Lib # 仅用于测试 talib
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rshare-0.1.26.tar.gz
(26.6 kB
view hashes)
Built Distributions
Close
Hashes for rshare-0.1.26-cp38-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb490551ecf4438c2b9fad336f7ad85e4f72d543aa9fdfba3a7137226835ca2b |
|
MD5 | f0d72df0cc5bb36b1d924dc9068838e4 |
|
BLAKE2b-256 | 62c9fc52f6c05c2e12e64c2f5544ac86d05ce64593a95dfad8e1a90c15d8671b |
Close
Hashes for rshare-0.1.26-cp38-abi3-manylinux_2_34_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | db8edc9d73d2703cd0620c0be5afc16cb791858d907e4a7e50b3eefb08b6be35 |
|
MD5 | 2d72188d2276764d8b390b55e07d97da |
|
BLAKE2b-256 | 16bd90f477ba4f660bfe7cf650afb3050a31e857c92f9ece9a4dfc36479e43be |
Close
Hashes for rshare-0.1.26-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97831d69b36dc9e759edbefa1e1e6bfeda46068fbd7e8dcce13216d9644b20e4 |
|
MD5 | 938a4b6f3d84f8427362c36b2cb1446a |
|
BLAKE2b-256 | 241b50e3797009871c2db98d87deca9ea702abe71b42244e9976491850fb279e |
Close
Hashes for rshare-0.1.26-cp38-abi3-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce2102634e9d5c7b7fe9c8d0148d3458a78c04a3f4dc8dea812c52d19585ce31 |
|
MD5 | c566e3aa510e78c5be703d2d5190f98e |
|
BLAKE2b-256 | b835a4c5cdabe5bf2c631a74c1decd4e941a8c5e93e711903ba19eabbeacdf42 |
Close
Hashes for rshare-0.1.26-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15dcbb2bd60ba3921083b65e9a3728140d8b687c9c756d21136ee88faddd05ba |
|
MD5 | 04bc040f7e0723c4e37b2fd56345db9e |
|
BLAKE2b-256 | f40a4b7800e2fac1e426b8bb5bf98b9099d48d1f1656c5790381f5b9925d90ca |