跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python 调用 c 这两种做法的不同
未分類
8 9 月 2020

Python 调用 c 这两种做法的不同

Python 调用 c 这两种做法的不同

資深大佬 : zxCoder 5

1 直接编译成一个可执行文件,然后 python 里执行命令 ./main -xx xxxx,传几个简单的参数 2 编译成动态库,然后 python 去调用这个动态库,再去执行对应的函数

这两种方法有很大区别吗?第 1 种很少见的原因是因为安全性问题吗?还是还有其他的问题?

大佬有話說 (9)

  • 資深大佬 : weyou

    第一种也不少见啊, 得看使用场景了,其实就是把 Python 当作 shell 用呗。这种方式受限于命令行参数,复杂一点的结构化参数就比较难办,需要参数来回转换,而且需要起另外的进程,此外获取此进程的返回值也没有第二种方法直接,也需要自行转换。如果是高频度的函数调用,这种方式显然比第二种效率低下。

  • 資深大佬 : billlee

    fork-exec 的开销还是比 function call 大得多的

  • 資深大佬 : ipwx

    恰恰相反,如果考虑安全性或者环境等乱七八糟的事情,第一种是很好的选择。

    选择第二种是为了效率。启动一个新进程开销特别大。

  • 資深大佬 : hakono

    第二种,开发调试起来是噩梦

  • 資深大佬 : ysc3839

    区别算大吧,前者需要启动新进程,后者是在当前进程中执行的。
    前者很少见可能是因为不便于传递数据。

  • 資深大佬 : SingeeKing

    第一种一方面涉及创建进程,另一方面交互很受限

  • 資深大佬 : Tony042

    @hakono 第二种用 C 写好,把 C 的函数都测试好,直接用 pybind11 包一下不就可以了,我感觉 C 这边的 unit test 做好,调试应该不费劲

  • 資深大佬 : swulling

    第一种开销比较大,看频率了
    频率不高可以用第一种

  • 主 資深大佬 : zxCoder

    @swulling 那如果是把 c 部分再封装一个 http 或者 rpc 服务来调用,这种方法对比前两种方法效率如何呢?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具