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

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

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

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

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

先實(shí)現(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')

再實(shí)現(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

    python處理document文檔保留原樣式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

信阳市| 格尔木市| 甘肃省| 浮山县| 商河县| 昌乐县| 仁布县| 台中市| 长顺县| 晋江市| 建昌县| 高碑店市| 东明县| 岑溪市| 德昌县| 长沙市| 天气| 丰都县| 策勒县| 宣城市| 西乡县| 平顶山市| 香港 | 武功县| 巫山县| 乐亭县| 察哈| 宁德市| 文登市| 和田市| 阳信县| 金门县| 彭泽县| 洛宁县| 呼和浩特市| 宜黄县| 安仁县| 高雄县| 和政县| 体育| 治县。|