elang和python互通的例子
抄袭自http://www.erlangsir.com/2011/04/14/python-%E5%92%8Cerlang%E4%BA%92%E9%80%9A%E4%BE%8B%E5%AD%90/
town.erl
-module(town). -behaviour(gen_server).-export([start/0, combine/1]). -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2,code_change/3]). -record(state, {port}).start() ->gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).stop() ->gen_server:cast(?MODULE, stop).init([]) ->process_flag(trap_exit, true),Port = open_port({spawn,"python -u ./town.py"},[stream, {line, 1024}]),{ok, #state{port = Port}}.handle_call({combine, Str}, _From, #state{port = Port} = State) ->io:format("here~n"),port_command(Port, Str),receive{Port, {data, {_Flag, Data}}} ->io:format("receiving:~p~n", [Data]),timer:sleep(2000),{reply, Data, Port}end.handle_cast(stop, State) ->{stop, normal, State}; handle_cast(_Msg, State) ->{noreply, State}.handle_info(Info, State) ->{noreply, State}.terminate(_Reason, Port) ->ok.code_change(_OldVsn, State, _Extra) ->{ok, State}.% Internal combine(_String) ->start(),Str = list_to_binary("combine|" ++ _String ++ "\n"),gen_server:call(?MODULE, {combine, Str}).
town.py
#! /usr/bin/python # Filename : town.pyimport sysdef handle(_string):if _string.startswith("combine|"):string = "".join(_string[8:].split(","))return string""" waiting for input""" while 1:# Recv.Binary Stream as Standard IN_stream = sys.stdin.readline()if not _stream:breakinString = _stream.strip("\r\n")outString = handle(inString)sys.stdout.write("%s\n" % (outString,))sys.exit(0)
测试
Eshell V6.2 (abort with ^G) 1> town:combine("aaa+bbb"). here receiving:"aaa+bbb" "aaa+bbb" 2>
elang和python互通的例子相关推荐
- python爬虫经典教程-python爬虫经典例子有哪些
python爬虫例子:首先导入爬虫的库,生成一个response对象:然后设置编码格式,并打印状态码:最后输出爬取的信息,代码为[print(response.text)]. python爬虫例子: ...
- python对象编程例子-Python 面向对象编程实例讲解
如果你没有任何以往的经验与面向对象(OO)编程,你可能想咨询或至少某种教程的入门课程,所以,你必须掌握的基本概念. 然而,这里是小推出的面向对象编程(OOP)给你带来更好的学习速度: OOP的术语概述 ...
- python脚本编程实例_C程序调用Python脚本的例子
下面我们一起来看看关于C程序调用Python脚本的例子,如果你对此有兴趣的希望此教程对各位同学会有所帮助. 代码如下 复制代码 #include int main(){ PyObject * g_pM ...
- python autoit获取网页ajax数据_WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)...
PS: 前提 1. 安装好webdriver下python实现的环境 2. 安装好Autoit(默认安装就可以了) 3. 另外需要一个139邮箱账号,脚本运行时上传的图片在附件里面 #coding:c ...
- 42个Python实用小例子[内附200+代码地址]
经常有同学苦恼,学了python基础之后找不到合适的练手机会.为此,有位热心人创建了一个项目,搜集整理了一堆实用的python代码小例子.这些小例子包括但不限于:Python基础.Web开发.数据科学 ...
- python基础程序例子
python基础程序例子如下: #!/usr/bin/python3# 第一个注释 print ("Hello, Python!") # 第二个注释# Fibonacci seri ...
- python多态的例子_Python编程之多态用法实例详解
本文实例讲述了Python编程之多态用法.分享给大家供大家参考.具体分析如下: 什么是多态?顾名思义,多态就是多种表现形态的意思.它是一种机制.一种能力,而非某个关键字.它在类的继承中得以实现,在类的 ...
- python编程软件例子-软件开发|10 个 Python 图像编辑工具
以下提到的这些 Python 工具在编辑图像.操作图像底层数据方面都提供了简单直接的方法. 当今的世界充满了数据,而图像数据就是其中很重要的一部分.但只有经过处理和分析,提高图像的质量,从中提取出有效 ...
- python对象编程例子-这是我见过最详细的Python面向对象编程!建议收藏!
原标题:这是我见过最详细的Python面向对象编程!建议收藏! 面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别. 面向过程编程: 1. 导入各种外部库 2. 设计各种全局变量 ...
最新文章
- 普通二叉树、二叉查找树、平衡二叉树常见操作汇总
- JavaScript 笔记 ( Prototype )
- 定位ARM Hard Fault 的方法
- redis springmvc mysql_redis和mysql怎么一起在springmvc里面
- phpcms文章的发布时间改为可输入的文本框
- linux mysql怎么建数据库用户,Linux MySQL新建用户
- 自动驾驶如何处理突发状况?
- Canvas -画图 关键字
- 使用 IntraWeb (21) - 基本控件之 TIWTabControl
- TCP建立连接的三次握手过程
- Matlab 画图函数
- 金蝶K3采购价格管控杂谈
- 计算机信息技术学ps吗,小学信息技术photoshop教案.docx
- 获取用户的openid与遇到的errcode:40029与errcode:40125,errmsg
- ASP.NET学习笔记(二)——一般处理程序之图片上传
- HDLC协议的基本概念和帧
- resultFul请求案例
- 小程序源码:修复版薅羊毛拼团商城前端+后端
- 计算机的风扇参数,电脑静音高效有诀窍 选购对风扇不可少
- 【Linux学习】权限