您现在的位置是:首页 > 文章详情

phpy —— Python 与 PHP 互调用库

日期:2023-12-11点击:272

phpy 是PythonPHP互调用库,可以在PHP中使用Python语言的函数和类库,或者在Python中使用PHP的包。 但不是语言内嵌。编码依然使用各自的原生语法。

phpy使得PHP可以调用所有Python的包,包括当下非常流行的PyTorchtransformersTensorFlowAI库,以及NumpyPandasScikit等科学计算库,还可以使用PyQtwxPython等图形界面库。

  • 目前仅支持 Linux 平台(理论上可以支持所有操作系统,待实现)
  • 不支持 Python 多线程、async-io特性

PHP 调用 Python

编译安装phpy.so作为扩展加载,修改php.ini追加extension=phpy.so即可。

例子:

 $os = PyCore::import("os"); $un = $os->uname(); echo strval($un);

Python 中调用 PHP

直接作为C++ Mudule,import 加载即可。

 import phpy content = phpy.call('file_get_contents', 'test.txt') o = phpy.Object('redis') assert o.call('connect', '127.0.0.1', 6379) rdata = phpy.call('uniqid') assert o.call('set', 'key', rdata) assert o.call('get', 'key') == rdata

实现原理

在进程内同时创建了ZendVMCPython VM,直接在进程堆栈空间内使用C函数互相调用, 开销只有zval <-> PyObject结构体转换,因此性能是非常高的。

实际案例

基于 tkinter 实现 GUI 的例子

 <?php $tkinter = PyCore::import('tkinter'); $root = $tkinter->Tk(); $root->title('我的窗口'); $root->geometry("500x500"); $root->resizable(False, False); $button = $tkinter->Button($root, text: "Click Me!!", command: PyCore::fn(function () { var_dump(func_get_args()); echo 'click me!!' . PHP_EOL; })); $button->pack(); $tkinter->mainloop();
原文链接:https://www.oschina.net/p/phpy
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章