想有偿请大佬写一些代码。 Python 调用 Cpp

2022-02-22 09:27:27 +08:00
 kahloy

因为有一些需求需要把一部分 Python 代码上传到服务器上,所以打算做一些简单的加密。

计划是用 C++重写一部分 Python 里面 numpypandas 的函数,不会特别多,希望能够直接在 Python 里面调用,性能和原有的函数相比不要差太多。

想先简单询个价,看看有没有老哥愿意接单。

T G: bXRydXBweA==

3312 次点击
所在节点    C++
16 条回复
vincentV2
2022-02-22 09:37:09 +08:00
a554340466
2022-02-22 09:39:39 +08:00
用 pybind11 性能不止不会差。。还会提升。。
kahloy
2022-02-22 09:46:23 +08:00
@vincentV2
@a554340466
感谢二位,我去看一下 py2sec ,以前都是自己写这个 setup 感觉很麻烦。。
如果能提升性能是最好的,这部分只会被调用 1-2 次,我只期待他不要太差就行。
xylophone21
2022-02-22 10:00:17 +08:00
@kahloy py2sec 的文档描述,一定程度上实现了“加密”保护源代码的需求。换句话说,这种“加密”可能是非常容易反编译出来的,不过这个方法确实简单。是否满足需求楼主自己判断。

如果不满足的话,看看这个
https://numpy.org/doc/stable/reference/c-api/index.html
kahloy
2022-02-22 10:04:33 +08:00
@xylophone21 因为我之前就在用 pyd ,所以我对这个东西的安全性是有自己的判断的。

这也是为什么我想要请大佬帮我直接复制一部分功能,我的 C 还停留在很多年前的 NOIP 水平,已经不足以让我写出现代化的代码了。。。
xylophone21
2022-02-22 10:09:34 +08:00
那可能我理解错了,以为你只需要提供 Python 到 C 的桥代码,你应该是希望有人帮你写所以 C 的(包括桥和逻辑)

我贴的链接是 numpy 的 C API ,也就是说你的 C++代码不需要这一部分的桥,直接调用 numpy for C 就可以了。
kahloy
2022-02-22 10:26:30 +08:00
@xylophone21 是的 我希望的就是我传递一个 array 给这个函数,输出的结果和我调用 pandas_func(array)得到一样的结果,并且效率别差太多。
Huelse
2022-02-22 11:30:15 +08:00
pybind11 值得你学习下
freemon
2022-02-22 11:35:19 +08:00
ctypes 吧,如果只是简单的计算,c/c++的代码刚好可以封装 so 库文件,python 用 ctypes 调用很简单
tanhui2333
2022-02-22 12:12:58 +08:00
可以试试 python + pyo3 + rust 组合
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
linrongbin
2022-02-22 12:34:19 +08:00
c++里调用 numpy 和 pandas 有点麻烦啊
ykk
2022-02-22 15:19:01 +08:00
kahloy
2022-02-22 22:47:43 +08:00
@ykk 买了 感觉还是挺实用的
ykk
2022-02-23 09:13:32 +08:00
@kahloy #14 其实我可以帮你搞定的。。😄
ruanimal
2022-02-23 10:23:37 +08:00
用 swig 多好啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835549

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX