最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python遠程方法調(diào)用實現(xiàn)過程解析

 更新時間:2020年07月28日 14:58:01   作者:Mars.wang  
這篇文章主要介紹了Python遠程方法調(diào)用實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

RPCHandler 和 RPCProxy 的基本思路是很比較簡單的。 如果一個客戶端想要調(diào)用一個遠程函數(shù),比如 foo(1, 2, z=3) ,代理類創(chuàng)建一個包含了函數(shù)名和參數(shù)的元組 (‘foo', (1, 2), {‘z': 3}) 。 這個元組被pickle序列化后通過網(wǎng)絡連接發(fā)生出去。 這一步在 RPCProxy 的 getattr() 方法返回的 do_rpc() 閉包中完成。

服務器接收后通過pickle反序列化消息,查找函數(shù)名看看是否已經(jīng)注冊過,然后執(zhí)行相應的函數(shù)。 執(zhí)行結(jié)果(或異常)被pickle序列化后返回發(fā)送給客戶端。實例需要依賴 multiprocessing 進行通信。 不過,這種方式可以適用于其他任何消息系統(tǒng)。例如,如果你想在ZeroMQ之上實習RPC, 僅僅只需要將連接對象換成合適的ZeroMQ的socket對象即可。

先實現(xiàn)server端

import json
from multiprocessing.connection import Listener
from threading import Thread


class RPCHandler:
  def __init__(self):
    self._functions = {}

  def register_function(self, func):
    self._functions[func.__name__] = func

  def handle_connection(self, connection):
    try:
      while True:
        func_name, args, kwargs = json.loads(connection.recv())
        # Run the RPC and send a response
        try:
          r = self._functions[func_name](*args, **kwargs)
          connection.send(json.dumps(r))
        except Exception as e:
          connection.send(json.dumps(e))
    except EOFError:
      pass


def rpc_server(handler, address, authkey):
  sock = Listener(address, authkey=authkey)
  while True:
    client = sock.accept()
    t = Thread(target=handler.handle_connection, args=(client,))
    t.daemon = True
    t.start()
# Some remote functions
def add(x,y):
  return x+y


if __name__ == '__main__':
  handler = RPCHandler()
  handler.register_function(add)
  # Run the server
  rpc_server(handler, ('127.0.0.1', 17000), authkey=b'peekaboo')

再實現(xiàn)client端

import json
from multiprocessing.connection import Client


class RPCProxy:

  def __init__(self, connection):
    self._connection = connection

  def __getattr__(self, name):
    def do_rpc(*args, **kwargs):
      self._connection.send(json.dumps((name, args, kwargs)))
      result = json.loads(self._connection.recv())
      if isinstance(result, Exception):
        raise result
      return result

    return do_rpc
if __name__ == '__main__':
  c = Client(('127.0.0.1', 17000), authkey=b'peekaboo')
  proxy = RPCProxy(c)
  res = proxy.add(2, 3)
  print(res)

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

相關(guān)文章

  • python處理document文檔保留原樣式

    python處理document文檔保留原樣式

    這篇文章主要為大家詳細介紹了python處理document文檔保留原樣式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Python實現(xiàn)朗讀在線音頻和本地音頻

    Python實現(xiàn)朗讀在線音頻和本地音頻

    在日常的Python軟件開發(fā)中,我們經(jīng)常會遇到一個非常重要的功能需求——讓程序能夠讀取并顯示文本內(nèi)容,下面我們就來學習一下Python實現(xiàn)朗讀音頻的具體操作吧
    2024-03-03
  • Python優(yōu)化技巧之利用ctypes提高執(zhí)行速度

    Python優(yōu)化技巧之利用ctypes提高執(zhí)行速度

    ctypes是Python的一個外部庫,提供和C語言兼容的數(shù)據(jù)類型,可以很方便地調(diào)用C DLL中的函數(shù)。今天我們就來詳細探討下ctypes庫的使用技巧
    2016-09-09
  • python numpy.power()數(shù)組元素求n次方案例

    python numpy.power()數(shù)組元素求n次方案例

    這篇文章主要介紹了python numpy.power()數(shù)組元素求n次方案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 基于Python制作ASCII碼轉(zhuǎn)換器

    基于Python制作ASCII碼轉(zhuǎn)換器

    ASCII碼是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語和其他西歐語言。本文將利用Python制作一個ASCII碼轉(zhuǎn)換器,感興趣的可以動手試一試
    2022-02-02
  • 使用python os模塊復制文件到指定文件夾的方法

    使用python os模塊復制文件到指定文件夾的方法

    今天小編就為大家分享一篇使用python os模塊復制文件到指定文件夾的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python圖片存儲和訪問的三種方式詳解

    Python圖片存儲和訪問的三種方式詳解

    在?Python?中處理圖像數(shù)據(jù)的時候,例如應用卷積神經(jīng)網(wǎng)絡等算法可以處理大量圖像數(shù)據(jù)集,這里就需要學習如何用最簡單的方式存儲、讀取數(shù)據(jù)。本文介紹了Python中圖片存儲和訪問的三種方式,需要的可以參考一下
    2022-04-04
  • python opencv 直方圖反向投影的方法

    python opencv 直方圖反向投影的方法

    這篇文章主要介紹了python opencv 直方圖反向投影的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 使用PyTorch實現(xiàn)手寫數(shù)字識別功能

    使用PyTorch實現(xiàn)手寫數(shù)字識別功能

    在人工智能的世界里,計算機視覺是最具魅力的領(lǐng)域之一,通過PyTorch這一強大的深度學習框架,我們將在經(jīng)典的MNIST數(shù)據(jù)集上,見證一個神經(jīng)網(wǎng)絡從零開始學會識別數(shù)字的全過程,本文給大家介紹了如何使用PyTorch實現(xiàn)手寫數(shù)字識別,需要的朋友可以參考下
    2025-03-03
  • 使用Python刪除PDF文件名中的特定文字

    使用Python刪除PDF文件名中的特定文字

    在處理大量PDF文件時,有時候我們可能需要對文件名進行批量修改,例如,我們可能需要將文件名中的特定文字刪除或替換,今天,我將向大家介紹如何使用Python編寫一個簡單的程序,選擇一個文件夾,并刪除文件名中的指定文字,需要的朋友可以參考下
    2023-09-09

最新評論

弥渡县| 利川市| 阿城市| 盐亭县| 吉木萨尔县| 九江市| 德兴市| 汪清县| 壤塘县| 泾源县| 英超| 玛沁县| 南郑县| 建宁县| 兴安盟| 江华| 南漳县| 萍乡市| 峡江县| 化隆| 巩义市| 沂水县| 镶黄旗| 永丰县| 革吉县| 安福县| 从化市| 冕宁县| 革吉县| 乳源| 富宁县| 三门县| 富裕县| 万载县| 开化县| 兰西县| 建瓯市| 昌都县| 丰县| 招远市| 利辛县|