python functiontype_Python多处理PicklingError:无法pickletype'function'
这是一张list of what can be pickled。特别是,函数只有在模块的顶层定义时才是可选择的。
这段代码:import multiprocessing as mp
class Foo():
@staticmethod
def work(self):
pass
if __name__ == '__main__':
pool = mp.Pool()
foo = Foo()
pool.apply_async(foo.work)
pool.close()
pool.join()
产生的错误与您发布的错误几乎相同:Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 505, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 315, in _handle_tasks
put(task)
PicklingError: Can't pickle : attribute lookup __builtin__.function failed
问题是pool方法都使用mp.SimpleQueue将任务传递给工作进程。通过mp.SimpleQueue的所有内容都必须是可选取的,并且foo.work不可选取,因为它不是在模块的顶层定义的。
它可以通过在顶层定义一个函数来修复,该函数调用foo.work():def work(foo):
foo.work()
pool.apply_async(work,args=(foo,))
注意foo是可选取的,因为Foo是在顶层定义的,而foo.__dict__是可选取的。
python functiontype_Python多处理PicklingError:无法pickletype'function'相关推荐
- python 重载的实现(single-dispatch generic function)
DAY 11. python 重载 函数重载是指允许定义参数数量或类型不同的同名函数,程序在运行时会根据所传递的参数类型选择应该调用的函数 ,但在默认情况下,python是不支持函数重载的,定义同名函 ...
- 【Python函数式编程】——偏函数(Partial function)
Python函数式编程--偏函数 Python的 functools 模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一 ...
- python fabric 部署falcon tcp closewait monitor function
@task @roles('userdefine') def falcon_plugin_ss_expand():# 下载软件run("""yum install -y ...
- python调用mysql中的自定义function并且返回结果
首先在Mysql中创立一个叫ForeignKeyTest的function,链接如下: https://blog.csdn.net/appleyuchi/article/details/7945291 ...
- python中的新式类与旧式类的一些基于descriptor的概念(下)
3. Descriptor介绍 3.1 Descriptor代码示例 3.2 定义 3.3 Descriptor Protocol(协议) 3.4 Descriptor调用方法 4. 基于Descri ...
- 我使用Python和Django在自己的网站上建立了一个会员专区。 这是我学到的东西。
I decided it was time to upgrade my personal website in order to allow visitors to buy and access my ...
- Python 实现自动化批量重打包Android Apps
写在前面的话 无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程 https://w ...
- 用Python解析AndroidManifest.xml文件找MainActivity
写在前面的话 这个是一篇水博客,因为我知道只要是个大二的小朋友就可以搞定,我大二就一天在搞这些事情,今天纯属吃饱了撑着,想敲键盘,等实验结果然后随便写写.我知道大家都会的,不会的小朋友随便看看然后自己 ...
- python代码实现插入排序
python代码实现插入排序 实现思路: 1.从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果 符合条件(比前面的大或者小,自定义),则让他们交换位置. 2.然后再用第三个数 ...
最新文章
- 一.Linq to JSON是用来干什么的?
- python中两个矩阵之间的点乘_Python基础--数据分析库--Numpy
- selenium search
- 用python设计学生管理系统_基于python和tkinter实现的一个简单的学生信息管理系统...
- 4步精准诊断“门店数字化”问题,助力门店起死回生
- Centos下安装X Window+GNOME Desktop+FreeNX
- 2017.9.28 lca 失败总结
- ids for this class must be manually assigned before calling save():Xxx
- dreamwave php,thinkphp+dreamwaver技巧
- python后台架构Django教程——manage.py命令
- java中文输出乱码_java汉字乱码解决办法
- 虚拟机安装苹果系统(Mac OSX 10.15包含所有资源)
- ember helper
- UOM Convertion Rate API
- 【9月16日】中文信息MMT模型
- 操作系统作业之银行家算法(c语言实现)
- 阿里云服务器宽带多少合适?宽带选择方法及5M宽带注意事项
- 用户画像如何分析 用户画像如何获取
- 双系统装完只能u盘启动_u盘装双系统开机没有系统选择界面怎么解决
- 塑壳断路器选型需关注的5个重要参数