抄袭自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互通的例子相关推荐

  1. python爬虫经典教程-python爬虫经典例子有哪些

    python爬虫例子:首先导入爬虫的库,生成一个response对象:然后设置编码格式,并打印状态码:最后输出爬取的信息,代码为[print(response.text)]. python爬虫例子: ...

  2. python对象编程例子-Python 面向对象编程实例讲解

    如果你没有任何以往的经验与面向对象(OO)编程,你可能想咨询或至少某种教程的入门课程,所以,你必须掌握的基本概念. 然而,这里是小推出的面向对象编程(OOP)给你带来更好的学习速度: OOP的术语概述 ...

  3. python脚本编程实例_C程序调用Python脚本的例子

    下面我们一起来看看关于C程序调用Python脚本的例子,如果你对此有兴趣的希望此教程对各位同学会有所帮助. 代码如下 复制代码 #include int main(){ PyObject * g_pM ...

  4. python autoit获取网页ajax数据_WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)...

    PS: 前提 1. 安装好webdriver下python实现的环境 2. 安装好Autoit(默认安装就可以了) 3. 另外需要一个139邮箱账号,脚本运行时上传的图片在附件里面 #coding:c ...

  5. 42个Python实用小例子[内附200+代码地址]

    经常有同学苦恼,学了python基础之后找不到合适的练手机会.为此,有位热心人创建了一个项目,搜集整理了一堆实用的python代码小例子.这些小例子包括但不限于:Python基础.Web开发.数据科学 ...

  6. python基础程序例子

    python基础程序例子如下: #!/usr/bin/python3# 第一个注释 print ("Hello, Python!") # 第二个注释# Fibonacci seri ...

  7. python多态的例子_Python编程之多态用法实例详解

    本文实例讲述了Python编程之多态用法.分享给大家供大家参考.具体分析如下: 什么是多态?顾名思义,多态就是多种表现形态的意思.它是一种机制.一种能力,而非某个关键字.它在类的继承中得以实现,在类的 ...

  8. python编程软件例子-软件开发|10 个 Python 图像编辑工具

    以下提到的这些 Python 工具在编辑图像.操作图像底层数据方面都提供了简单直接的方法. 当今的世界充满了数据,而图像数据就是其中很重要的一部分.但只有经过处理和分析,提高图像的质量,从中提取出有效 ...

  9. python对象编程例子-这是我见过最详细的Python面向对象编程!建议收藏!

    原标题:这是我见过最详细的Python面向对象编程!建议收藏! 面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别. 面向过程编程: 1. 导入各种外部库 2. 设计各种全局变量 ...

最新文章

  1. 普通二叉树、二叉查找树、平衡二叉树常见操作汇总
  2. JavaScript 笔记 ( Prototype )
  3. 定位ARM Hard Fault 的方法
  4. redis springmvc mysql_redis和mysql怎么一起在springmvc里面
  5. phpcms文章的发布时间改为可输入的文本框
  6. linux mysql怎么建数据库用户,Linux MySQL新建用户
  7. 自动驾驶如何处理突发状况?
  8. Canvas -画图 关键字
  9. 使用 IntraWeb (21) - 基本控件之 TIWTabControl
  10. TCP建立连接的三次握手过程
  11. Matlab 画图函数
  12. 金蝶K3采购价格管控杂谈
  13. 计算机信息技术学ps吗,小学信息技术photoshop教案.docx
  14. 获取用户的openid与遇到的errcode:40029与errcode:40125,errmsg
  15. ASP.NET学习笔记(二)——一般处理程序之图片上传
  16. HDLC协议的基本概念和帧
  17. resultFul请求案例
  18. 小程序源码:修复版薅羊毛拼团商城前端+后端
  19. 计算机的风扇参数,电脑静音高效有诀窍 选购对风扇不可少
  20. 【Linux学习】权限

热门文章

  1. 三菱M80操作介绍_三菱PLC操作
  2. 2019各大互联网公司年会盘点
  3. vue+elementui+html+css+js昵图网
  4. 强大的安全工具 杀毒软件小红伞试用测评
  5. 鸿蒙适配机型小米,华为鸿蒙适配机型公布 P50首发/小米10S才是真正至尊版
  6. Typora导出Word
  7. 问题步骤记录器——Windows系统下自带的录屏神器?
  8. oracle转换全角函数,Oracle全角変換
  9. ffmpeg 有声视频合成背景音乐(合成多声音/合成多音轨)
  10. Ubuntu18.04系统硬盘分区方法