因为有一些需求需要把一部分 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 uyZL3221XZ2xGZ3D 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 多好啊 |