中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

python進程間共享數據的方法

這篇文章主要講解了“python進程間共享數據的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python進程間共享數據的方法”吧!

公司主營業務:成都做網站、成都網站制作、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。成都創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創新互聯公司推出麻江免費做網站回饋大家。

def worker(num, mystr, arr):
    num.value *= 2
    mystr.value = "ok"
    for i in range(len(arr)):
        arr[i] = arr[i] * (-1) + 1.5

def dump_vars(num, mystr, arr):
    print 'num: ', num.value
    print 'str: ', mystr[:]
    print 'arr: ', arr[:]

if __name__=='__main__':
    num = Value('i', 5)
    mystr = Array('c', 'just for test')
    arr = Array('d', [1.0, 1.5, -2.0])
    dir(str)
    print 'init value'
    dump_vars(num, mystr, arr)

    ps = [Process(target=worker, args=(num, mystr, arr)) for x in range(3)]
    for p in ps:
        p.start()
    for p in ps:
        p.join()

    print
    print 'after all workers finished'
    dump_vars(num, mystr, arr)

上述代碼打印結果:

python進程間共享數據的方法

注意看紅色框住的內容,多次測試我發現,在共享字符串的時候,在主進程中的初始化決定了這個字符串的長度,

創建后字符串的長度固定不變,相當于把這個字符串所在的地址復制給一個指針,并且在字符串的首地址記錄了自身的長度,

在以后讀取這個值的時候就會去讀取那一段固定長度的內容,而不管現在的新內容長度是多少,舉個例子:

比如我們在主進程初始化一段字符串  "abcde",一旦初始化,長度就固定了,現在長度是5,然后我們在其他進程賦值,我們嘗試賦值為

"abcdefg",此時執行會報錯,因為長度超標了,我們在賦值為 "yes",最后輸出結果為 "yes&efg"(此處的&是代表一個不可顯示的字符,不同的環境下顯示不同,有可能顯示空格,有可能顯示null)。也就是說長短都不行,必須和初始化字符串等長。

于是得出這樣一個結論,如果你要共享一個字符串,那么在子進程中賦值時必須賦值長度相當的字符串。建議在子進程中可以先檢查字符串長度,然后在根據需要拼接指定長度的字符串

上面的分析建立在下面的基礎上,請先看下面的基本用法:

多進程間共享數據,可以使用 multiprocessing.Value 和 multiprocessing.Array

Value(typecode_or_type, *args[, lock])
Value函數返回一個shared memory包裝類,其中包含一個ctypes對象
typecode_or_type typecode列表如下
------------------------------------------------------------------
Type code   C Type      Python Type
'c'     char            character
'b'         signed char         int
'B'         unsigned char       int
'u'         Py_UNICODE      Unicode character
'h'         signed short        int
'H'         unsigned short      int
'i'         signed int      int
'I'         unsigned int        long
'l'         signed long         int
'L'         unsigned long       long
'f'         float       float
'd'         double      float
---------------------------------------------------------
Array(typecode_or_type, size_or_initializer, *, lock=True)
lock 默認值是True:創建一個新的lock來控制對value的訪問。該參數也可以是 multiprocessing.Lock 或 multiprocessing.RLock 對像,用來控制對value的訪問

感謝各位的閱讀,以上就是“python進程間共享數據的方法”的內容了,經過本文的學習后,相信大家對python進程間共享數據的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!

網站名稱:python進程間共享數據的方法
URL鏈接:http://m.2m8n56k.cn/article18/jjdsgp.html

成都網站建設公司_創新互聯,為您提供用戶體驗網站制作關鍵詞優化建站公司App設計做網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

營銷型網站建設
主站蜘蛛池模板: 久久精品久久精品久久 | 怡红院在线视频观看 | 欧美精品在欧美一区二区 | 国产欧美日韩综合精品一区二区 | 91成人免费版 | 午夜爽 | 99久久精品国产免费 | 成人国产亚洲 | 自拍 欧美 | 黄色三级日韩 | 午夜限制r级噜噜片一区二区 | 日本亚洲成高清一区二区三区 | 国产麻豆交换夫妇 | 亚洲免费视频网址 | 国产高清视频免费最新在线 | 欧美一级欧美一级毛片 | 夜色毛片永久免费 | 久草草视频在线观看免费高清 | 亚洲精品久久久久久久福利 | 久久精品久久精品国产大片 | 福利网址在线 | 草久久久| 手机看片午夜 | 国产大片在线看 | 日本亚洲成高清一区二区三区 | 男操女视频网站 | 免费人成在线观看视频不卡 | 久9这里精品免费视频 | 国产日韩欧美自拍 | 国产亚洲精品福利片 | 黄色网址在线免费观看 | 亚洲精品久久久久中文字幕一区 | 加勒比一本一道在线 | 亚洲欧美成人 | 男女视频在线观看 | 国产乱子伦真实china | 国产成人精品免费视频软件 | 国产欧美日韩视频在线观看一区二区 | 久久国产成人午夜aⅴ影院 久久国产成人亚洲精品影院老金 | 久久久久免费精品国产 | 国产在线乱子伦一区二区 |