因为有一些需求需要把一部分 Python 代码上传到服务器上,所以打算做一些简单的加密。
计划是用 C++重写一部分 Python 里面 numpy
和 pandas
的函数,不会特别多,希望能够直接在 Python 里面调用,性能和原有的函数相比不要差太多。
想先简单询个价,看看有没有老哥愿意接单。
T G: bXRydXBweA==
1
vincentV2 2022-02-22 09:37:09 +08:00
|
2
a554340466 2022-02-22 09:39:39 +08:00
用 pybind11 性能不止不会差。。还会提升。。
|
3
kahloy OP @vincentV2
@a554340466 感谢二位,我去看一下 py2sec ,以前都是自己写这个 setup 感觉很麻烦。。 如果能提升性能是最好的,这部分只会被调用 1-2 次,我只期待他不要太差就行。 |
4
xylophone21 2022-02-22 10:00:17 +08:00
@kahloy py2sec 的文档描述,一定程度上实现了“加密”保护源代码的需求。换句话说,这种“加密”可能是非常容易反编译出来的,不过这个方法确实简单。是否满足需求楼主自己判断。
如果不满足的话,看看这个 https://numpy.org/doc/stable/reference/c-api/index.html |
5
kahloy OP @xylophone21 因为我之前就在用 pyd ,所以我对这个东西的安全性是有自己的判断的。
这也是为什么我想要请大佬帮我直接复制一部分功能,我的 C 还停留在很多年前的 NOIP 水平,已经不足以让我写出现代化的代码了。。。 |
6
xylophone21 2022-02-22 10:09:34 +08:00
那可能我理解错了,以为你只需要提供 Python 到 C 的桥代码,你应该是希望有人帮你写所以 C 的(包括桥和逻辑)
我贴的链接是 numpy 的 C API ,也就是说你的 C++代码不需要这一部分的桥,直接调用 numpy for C 就可以了。 |
7
kahloy OP @xylophone21 是的 我希望的就是我传递一个 array 给这个函数,输出的结果和我调用 pandas_func(array)得到一样的结果,并且效率别差太多。
|
8
Huelse 2022-02-22 11:30:15 +08:00
pybind11 值得你学习下
|
9
freemon 2022-02-22 11:35:19 +08:00
ctypes 吧,如果只是简单的计算,c/c++的代码刚好可以封装 so 库文件,python 用 ctypes 调用很简单
|
10
tanhui2333 2022-02-22 12:12:58 +08:00
可以试试 python + pyo3 + rust 组合
|
11
duke807 2022-02-22 12:32:33 +08:00
可以把各別或全部 py 文件編譯成二進制,完全不會有源碼的那種(你可以檢查中間的 c 文件),譬如我一個項目,主 py 腳本編譯成可執行文件,被引用的 py 腳本編譯成 so 文件
編譯出来的 so 也可以被普通 py 文件 import (編譯過的和沒編譯的文件可以任意組合搭配) echo "cython main" cython --embed -o main.c main.py gcc -Os -I /usr/include/python3.8 -o main main.c -lpython3.8 -lpthread -lm -lutil -ldl mv main.py main.py_bk echo "cython ae_" cython --embed -o ae_.c ae_.py gcc -Os -I /usr/include/python3.8 -o ae_.so ae_.c -shared -fPIC -lpython3.8 -lpthread -lm -lutil -ldl mv ae_.py ae_.py_bk |
12
linrongbin 2022-02-22 12:34:19 +08:00 via Android
c++里调用 numpy 和 pandas 有点麻烦啊
|
13
ykk 2022-02-22 15:19:01 +08:00
|
16
ruanimal 2022-02-23 10:23:37 +08:00
用 swig 多好啊
|