phpy —— Python 与 PHP 互调用库
phpy 是Python
与PHP
互调用库,可以在PHP
中使用Python
语言的函数和类库,或者在Python
中使用PHP
的包。 但不是语言内嵌。编码依然使用各自的原生语法。
phpy
使得PHP
可以调用所有Python
的包,包括当下非常流行的PyTorch
、transformers
、TensorFlow
等AI
库,以及Numpy
、Pandas
、Scikit
等科学计算库,还可以使用PyQt
、wxPython
等图形界面库。
- 目前仅支持 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
实现原理
在进程内同时创建了ZendVM
和CPython 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();

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 并发情况如何实现加锁来保证数据一致性?
单体架构下锁的实现方案 1. ReentrantLock全局锁 ReentrantLock(可重入锁),指的是一个线程再次对已持有的锁保护的临界资源时,重入请求将会成功。 简单的与我们常用的Synchronized进行比较: ReentrantLock Synchronized 锁实现机制 依赖AQS 监视器模式 灵活性 支持响应超时、中断、尝试获取锁 不灵活 释放形式 必须显示调用unlock()释放锁 自动释放监视器 锁类型 公平锁 & 非公平锁 非公平锁 条件队列 可关联多个条件队列 关联一个条件队列 可重入性 可重入 可重入 AQS机制:如果被请求的共享资源空闲,那么就当前请求资源的线程设置为有效的工作线程,将共享资源通过CAScompareAndSetState设置为锁定状态;如果共享资源被占用,就采用一定的阻塞等待唤醒机制(CLH变体的FIFO双端队列)来保证锁分配。 可重入性:无论是公平锁还是非公平锁的情况,加锁过程会利用一个state值 private volatile int state state值初始化的时候为0,表示没有任何线程持有锁 当有线...
- 下一篇
大湾区一体化算力服务平台正式发布,算力规模超 5000P
12月10日,在第二届数字政府建设峰会暨数字湾区发展论坛上,深圳市前海管理局、国家(深圳·前海)新型互联网交换中心(下称“前海交换中心”)共同发布粤港澳大湾区一体化算力服务平台,并正式成立前海算力服务联盟。 据介绍,该平台由前海管理局提出设想和要求,在深圳市通管局、市工信局的支持下,由前海交换中心和紫金山实验室共同开发部署。 官方透露,该平台自 10 月 31 日试运行以来,汇聚的算力规模大幅增长近 4 倍,总规模已达 5180 PFLOPS,主流芯片覆盖率超 75%,并已为 10 余个企业、高校、科研机构的人工智能团队提供算力服务。 在算力调度方面,创新多维一体编排算法,实现算力高效调度和智能供给; 在算力交易方面,平台不收取中介费用,促进供需双方合作与交易; 在算力应用方面,高度集成各类算法工具,实现应用一键部署、资源秒级开通,进一步降低门槛、提升效率; 在算力安全方面,构建算网一体化安全防护体系,持续强化算力安全保障。 同时, 大湾区首个算力服务行业组织 —— 前海算力服务联盟正式成立,首批成员单位包括前海科创集团、前海交换中心、紫金山实验室、华为、深圳商汤、万国数据、世纪互联、...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6