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

Python multiprocess pool模塊報錯pickling error問題解決方法分析

 更新時間:2019年03月20日 08:59:47   作者:Arkenstone  
這篇文章主要介紹了Python multiprocess pool模塊報錯pickling error問題解決方法,結(jié)合實例形式分析了multiprocess pool模塊報錯pickling error的原因與解決方法,需要的朋友可以參考下

本文實例講述了Python multiprocess pool模塊報錯pickling error問題解決方法。分享給大家供大家參考,具體如下:

問題

之前在調(diào)用class內(nèi)的函數(shù)用multiprocessing模塊的pool函數(shù)進行多線程處理的時候報了以下下錯誤信息:

PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed

查了下官方文檔發(fā)現(xiàn)python默認只能pickle以下的類型:

  • None, True, and False
  • integers, floating point numbers, complex numbers
  • strings, bytes, bytearrays
  • tuples, lists, sets, and dictionaries containing only picklable objects
  • functions defined at the top level of a module (using def, not lambda)
  • built-in functions defined at the top level of a module
  • classes that are defined at the top level of a module
  • instances of such classes whose dict or the result of calling getstate() is picklable (see section -
  • Pickling Class Instances for details).

函數(shù)只能pickle在頂層定義的函數(shù),很明顯的class內(nèi)的函數(shù)無法被pickle因此會報錯。

import multiprocessing
def work():  # top-level 函數(shù)
  print "work!"
class Foo():
  def work(self): # 非top-level函數(shù)
    print "work"
pool1 = multiprocessing.Pool(processes=4)
foo = Foo()
pool1.apply_async(foo.work)
pool1.close()
pool1.join()
# 此時報錯
pool2 = multiprocessing.Pool(processes=4)
pool2.apply_async(work)
pool2.close()
pool2.join()
# 此時工作正常

解決方案

調(diào)用pathos包下的multiprocessing模塊代替原生的multiprocessing。pathos中multiprocessing是用dill包改寫過的,dill包可以將幾乎所有python的類型都serialize,因此都可以被pickle?;蛘咭部梢宰约河胐ill寫一個(有點重復造輪子之嫌?。?/p>

參考

1. https://stackoverflow.com/questions/8804830/python-multiprocessing-picklingerror-cant-pickle-type-function
2. https://docs.python.org/3/library/pickle.html#what-can-be-pickled-and-unpickled
3. https://github.com/uqfoundation/pathos

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設計入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關(guān)文章

  • Django中ORM基本應用與原理解析

    Django中ORM基本應用與原理解析

    Django的ORM模塊是框架特色功能之一,它把數(shù)據(jù)表與Python類對應、表字段與類屬性對應、類實例與數(shù)據(jù)記錄對應,并將對類實例的操作映射到數(shù)據(jù)庫中,這篇文章主要介紹了Django?ORM基本應用與原理剖析,需要的朋友可以參考下
    2022-10-10
  • Python守護進程用法實例分析

    Python守護進程用法實例分析

    這篇文章主要介紹了Python守護進程用法,實例分析了Python守護進程的功能及使用方法,需要的朋友可以參考下
    2015-06-06
  • NumPy實現(xiàn)ndarray多維數(shù)組操作

    NumPy實現(xiàn)ndarray多維數(shù)組操作

    NumPy一個非常重要的作用就是可以進行多維數(shù)組的操作,這篇文章主要介紹了NumPy實現(xiàn)ndarray多維數(shù)組操作,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Python中的Networkx的基本使用

    Python中的Networkx的基本使用

    Networkx是一個Python的包,可以用來創(chuàng)建和處理復雜的圖網(wǎng)絡結(jié)構(gòu),這篇文章主要介紹了Python中的Networkx詳解,需要的朋友可以參考下
    2023-02-02
  • PyCharm 常用快捷鍵和設置方法

    PyCharm 常用快捷鍵和設置方法

    下面小編就為大家分享一篇PyCharm 常用快捷鍵和設置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 使用Python讀寫文本文件及編寫簡單的文本編輯器

    使用Python讀寫文本文件及編寫簡單的文本編輯器

    這篇文章主要介紹了使用Python讀寫文本文件及編寫簡單的文本編輯器的方法,可以利用簡單的Python代碼實現(xiàn)編輯器中的讀取清空和文本文件的新建等操作,需要的朋友可以參考下
    2016-03-03
  • python繪制封閉多邊形教程

    python繪制封閉多邊形教程

    今天小編就為大家分享一篇python繪制封閉多邊形教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python實現(xiàn)錄屏功能(親測好用)

    python實現(xiàn)錄屏功能(親測好用)

    這篇文章主要介紹了使python實現(xiàn)錄屏功能(親測好用),本文通過實例代碼給大家介紹的非常詳細,對大家的工作或?qū)W習具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 使用Python項目生成所有依賴包的清單方式

    使用Python項目生成所有依賴包的清單方式

    這篇文章主要介紹了使用Python項目生成所有依賴包的清單方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python批量實現(xiàn)橫屏轉(zhuǎn)豎屏的視頻處理工具

    Python批量實現(xiàn)橫屏轉(zhuǎn)豎屏的視頻處理工具

    這篇文章主要為大家詳細介紹了如何使用Python和Tkinter框架開發(fā)一個視頻處理器應用,用于批量橫屏轉(zhuǎn)豎屏視頻處理,支持多種視頻格式和編碼選擇,需要的可以了解下
    2025-02-02

最新評論

土默特右旗| 怀宁县| SHOW| 汕尾市| 施秉县| 云阳县| 金塔县| 青海省| 岱山县| 拉萨市| 榕江县| 电白县| 虞城县| 白城市| 治县。| 宾阳县| 漳州市| 定兴县| 嘉峪关市| 芦山县| 南雄市| 柏乡县| 思茅市| 航空| 虹口区| 青川县| 保德县| 方城县| 石林| 自治县| 恩施市| 邵武市| 武鸣县| 富川| 淮北市| 泾阳县| 杂多县| 阳城县| 大庆市| 社旗县| 信阳市|