欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ERLANG和PYTHON互通實現(xiàn)過程詳解

 更新時間:2019年07月05日 10:55:14   作者:Free.Wang  
這篇文章主要介紹了ERLANG和PYTHON互通過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

最近開發(fā) Erlang ,對其字符串處理能力無言至極,于是決定把它和python聯(lián)合起來,打造一個強力的分布式系統(tǒng),等將來需要系統(tǒng)級開發(fā)時,我再把 C++/C組合進來.

首先參考了 Erlang 官方文檔和 http://blog.developers.api.sina.com.cn/?tag=erlang 以及 http://kazmier.net/computer/port-howto/ .

研讀了將近24個小時, 才終于完全把問題解決. 起名為town,town在英文里表示集市,也就是代表各種語言在這里的交流與互動。) )

-module(town).
-behaviour(gen_server).
 
%% API
-export([start/0,combine/1]).
 
%% gen_server callbacks
-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({global, ?MODULE}, ?MODULE, [], []).
stop() ->
 gen_server:cast(?SERVER, stop).
init([]) ->
 process_flag(trap_exit, true),
 Port = open_port({spawn, "python -u /home/freefis/Desktop/town.py"},[stream,{line, 1024}]),
 {ok, #state{port = Port}}.
 
handle_call({combine,String}, _From, #state{port = Port} = State) ->
 port_command(Port,String),
 receive
 {Port,{data,{_Flag,Data}}} ->
  io:format("receiving:~p~n",[Data]),
  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(),
 String = list_to_binary("combine|"++_String++"\n"),
 gen_server:call(?SERVER,{combine,String},infinity),
 stop().

這段是Python的腳本 當erlang中town:combine(“sentence1+sentence2”)執(zhí)行時,會在后臺啟動python的腳本,處理完畢后返回給Erlang結果:sentence1sentence2,然后退出。

import sys
def 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: break
 # Scheme, Turn into Formal String
 inString = _stream.strip("\r\n")
 # handle String
 outString = handle(inString)
 # send to port as Standart OUT
 sys.stdout.write("%s\n" % (outString,))
 sys.exit(0)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python數據庫操作指南之PyMysql使用詳解

    python數據庫操作指南之PyMysql使用詳解

    PyMySQL是在Python3.x版本中用于連接MySQL服務器的一個庫,Python2 中則使用mysqldb,下面這篇文章主要給大家介紹了關于python數據庫操作指南之PyMysql使用的相關資料,需要的朋友可以參考下
    2023-03-03
  • 已解決卸載pip重新安裝的方法

    已解決卸載pip重新安裝的方法

    粉絲群里面的一個小伙伴遇到問題跑來私信我,想用卸載pip重新安裝pip,但是發(fā)生了報錯(當時他心里瞬間涼了一大截,跑來找我求助,然后順利幫助他解決了,順便記錄一下希望可以幫助到更多遇到這個問題的小伙伴
    2023-04-04
  • python日志logging模塊使用方法分析

    python日志logging模塊使用方法分析

    這篇文章主要介紹了python日志logging模塊使用方法,結合實例形式較為詳細的分析了Python日志logging模塊相關API函數與應用技巧,需要的朋友可以參考下
    2019-05-05
  • socket連接關閉問題分析

    socket連接關閉問題分析

    socket建立連接的時候是三次握手,這個大家都很清楚,但是socket關閉連接的時候,需要進行四次揮手,但很多人對于這四次揮手的具體流程不清楚,吃了很多虧,本文來為大家進行分析
    2022-01-01
  • 教你如何在Pycharm中導入requests模塊

    教你如何在Pycharm中導入requests模塊

    這篇文章主要介紹了教你如何在Pycharm中導入requests模塊,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 本機安裝PaddlePaddle安裝指南及步驟詳解

    本機安裝PaddlePaddle安裝指南及步驟詳解

    PaddlePaddle是百度研發(fā)的開源開放的深度學習平臺,有全面的官方支持的工業(yè)級應用模型,涵蓋自然語言處理、計算機視覺、推薦引擎等多個領域,并開放多個領先的預訓練中文模型。這篇文章主要介紹了本機安裝PaddlePaddle安裝指南,需要的朋友可以參考下
    2021-12-12
  • pandas中的DataFrame按指定順序輸出所有列的方法

    pandas中的DataFrame按指定順序輸出所有列的方法

    下面小編就為大家分享一篇pandas中的DataFrame按指定順序輸出所有列的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python實現(xiàn)數獨游戲 java簡單實現(xiàn)數獨游戲

    python實現(xiàn)數獨游戲 java簡單實現(xiàn)數獨游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)數獨游戲和java實現(xiàn)數獨游戲的相關代碼,比較兩種語言實現(xiàn)數獨游戲的區(qū)別
    2018-03-03
  • 使用Python玩轉串口(基于pySerial問題)

    使用Python玩轉串口(基于pySerial問題)

    這篇文章主要介紹了使用Python玩轉串口(基于pySerial問題),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python函數式編程指南(二):從函數開始

    Python函數式編程指南(二):從函數開始

    這篇文章主要介紹了Python函數式編程指南(二):從函數開始,本文講解了定義一個函數、使用函數賦值、閉包、作為參數等內容,需要的朋友可以參考下
    2015-06-06

最新評論