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

Python如何發(fā)送與接收大型數(shù)組

 更新時間:2020年08月07日 09:02:55   作者:David Beazley  
這篇文章主要介紹了Python如何發(fā)送與接收大型數(shù)組,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下

問題

你要通過網(wǎng)絡連接發(fā)送和接受連續(xù)數(shù)據(jù)的大型數(shù)組,并盡量減少數(shù)據(jù)的復制操作。

解決方案

下面的函數(shù)利用 memoryviews 來發(fā)送和接受大數(shù)組:

# zerocopy.py

def send_from(arr, dest):
  view = memoryview(arr).cast('B')
  while len(view):
    nsent = dest.send(view)
    view = view[nsent:]

def recv_into(arr, source):
  view = memoryview(arr).cast('B')
  while len(view):
    nrecv = source.recv_into(view)
    view = view[nrecv:]

為了測試程序,首先創(chuàng)建一個通過socket連接的服務器和客戶端程序:

>>> from socket import *
>>> s = socket(AF_INET, SOCK_STREAM)
>>> s.bind(('', 25000))
>>> s.listen(1)
>>> c,a = s.accept()
>>>

在客戶端(另外一個解釋器中):

>>> from socket import *
>>> c = socket(AF_INET, SOCK_STREAM)
>>> c.connect(('localhost', 25000))
>>>

本節(jié)的目標是你能通過連接傳輸一個超大數(shù)組。這種情況的話,可以通過 array 模塊或 numpy 模塊來創(chuàng)建數(shù)組:

# Server
>>> import numpy
>>> a = numpy.arange(0.0, 50000000.0)
>>> send_from(a, c)
>>>

# Client
>>> import numpy
>>> a = numpy.zeros(shape=50000000, dtype=float)
>>> a[0:10]
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> recv_into(a, c)
>>> a[0:10]
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
>>>

討論

在數(shù)據(jù)密集型分布式計算和平行計算程序中,自己寫程序來實現(xiàn)發(fā)送/接受大量數(shù)據(jù)并不常見。 不過,要是你確實想這樣做,你可能需要將你的數(shù)據(jù)轉換成原始字節(jié),以便給低層的網(wǎng)絡函數(shù)使用。 你可能還需要將數(shù)據(jù)切割成多個塊,因為大部分和網(wǎng)絡相關的函數(shù)并不能一次性發(fā)送或接受超大數(shù)據(jù)塊。

一種方法是使用某種機制序列化數(shù)據(jù)——可能將其轉換成一個字節(jié)字符串。 不過,這樣最終會創(chuàng)建數(shù)據(jù)的一個復制。 就算你只是零碎的做這些,你的代碼最終還是會有大量的小型復制操作。

本節(jié)通過使用內存視圖展示了一些魔法操作。 本質上,一個內存視圖就是一個已存在數(shù)組的覆蓋層。不僅僅是那樣, 內存視圖還能以不同的方式轉換成不同類型來表現(xiàn)數(shù)據(jù)。 這個就是下面這個語句的目的:

view = memoryview(arr).cast('B')

它接受一個數(shù)組 arr并將其轉換為一個無符號字節(jié)的內存視圖。這個視圖能被傳遞給socket相關函數(shù), 比如 socket.send() send.recv_into() 。 在內部,這些方法能夠直接操作這個內存區(qū)域。例如,sock.send() 直接從內存中發(fā)生數(shù)據(jù)而不需要復制。 send.recv_into() 使用這個內存區(qū)域作為接受操作的輸入緩沖區(qū)。

剩下的一個難點就是socket函數(shù)可能只操作部分數(shù)據(jù)。 通常來講,我們得使用很多不同的 send() recv_into() 來傳輸整個數(shù)組。 不用擔心,每次操作后,視圖會通過發(fā)送或接受字節(jié)數(shù)量被切割成新的視圖。 新的視圖同樣也是內存覆蓋層。因此,還是沒有任何的復制操作。

這里有個問題就是接受者必須事先知道有多少數(shù)據(jù)要被發(fā)送, 以便它能預分配一個數(shù)組或者確保它能將接受的數(shù)據(jù)放入一個已經(jīng)存在的數(shù)組中。 如果沒辦法知道的話,發(fā)送者就得先將數(shù)據(jù)大小發(fā)送過來,然后再發(fā)送實際的數(shù)組數(shù)據(jù)。

以上就是Python如何發(fā)送與接收大型數(shù)組的詳細內容,更多關于Python發(fā)送接收大型數(shù)組的資料請關注腳本之家其它相關文章!

相關文章

  • Python中dataclass庫實例詳解

    Python中dataclass庫實例詳解

    這篇文章主要介紹了Python中dataclass庫,合理使用dataclass將會大大減輕開發(fā)中的負擔,將我們從大量的重復勞動中解放出來,這既是dataclass的魅力,本文結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-09-09
  • Python計算程序運行時間的方法

    Python計算程序運行時間的方法

    這篇文章主要介紹了Python計算程序運行時間的方法,分別記錄起始時間與結束時間,計算兩者之間的差值來獲得程序的運行時間,需要的朋友可以參考下
    2014-12-12
  • Python按條件批量刪除TXT文件行工具

    Python按條件批量刪除TXT文件行工具

    這篇文章主要為大家詳細介紹了Python如何實現(xiàn)按條件批量刪除TXT文件中行的工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • Python 的七個HTTP請求庫對比小結

    Python 的七個HTTP請求庫對比小結

    本文主要介紹了Python 的七個HTTP請求庫對比小結,文中通過圖表,示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • CentOS7下安裝python3.6.8的教程詳解

    CentOS7下安裝python3.6.8的教程詳解

    這篇文章主要介紹了CentOS7下安裝python3.6.8的教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Python 代碼實現(xiàn)各種酷炫功能

    Python 代碼實現(xiàn)各種酷炫功能

    這篇文章主要介紹了Python 代碼實現(xiàn)各種酷炫功能,生成二維碼、生成詞云、批量摳圖、文字情緒識別等功能分享,需要的小伙伴可以參考一下
    2022-03-03
  • Python簡單獲取自身外網(wǎng)IP的方法

    Python簡單獲取自身外網(wǎng)IP的方法

    這篇文章主要介紹了Python簡單獲取自身外網(wǎng)IP的方法,涉及Python基于第三方平臺獲取本機外網(wǎng)IP的操作技巧,需要的朋友可以參考下
    2016-09-09
  • Python lxml解析HTML并用xpath獲取元素的方法

    Python lxml解析HTML并用xpath獲取元素的方法

    今天小編就為大家分享一篇Python lxml解析HTML并用xpath獲取元素的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python基于機器學習預測股票交易信號

    python基于機器學習預測股票交易信號

    近年來,隨著技術的發(fā)展,機器學習和深度學習在金融資產(chǎn)量化研究上的應用越來越廣泛和深入。目前,大量數(shù)據(jù)科學家在Kaggle網(wǎng)站上發(fā)布了使用機器學習/深度學習模型對股票、期貨、比特幣等金融資產(chǎn)做預測和分析的文章。本文就來看看如何用python預測股票交易信號
    2021-05-05
  • Pytorch 實現(xiàn)凍結指定卷積層的參數(shù)

    Pytorch 實現(xiàn)凍結指定卷積層的參數(shù)

    今天小編就為大家分享一篇Pytorch 實現(xiàn)凍結指定卷積層的參數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評論

梧州市| 隆回县| 栾城县| 洪湖市| 长武县| 霍州市| 依安县| 吉安县| 资兴市| 襄樊市| 孙吴县| 洞头县| 阿巴嘎旗| 依安县| 灵寿县| 九台市| 卢湾区| 湾仔区| 黄龙县| 泰来县| 新建县| 沧州市| 临潭县| 隆德县| 阿合奇县| 桓仁| 枝江市| 朝阳区| 桑日县| 莒南县| 浦江县| 德江县| 高淳县| 夏河县| 阿鲁科尔沁旗| 兴海县| 湟源县| 曲周县| 台山市| 本溪| 安图县|