Python2.7 PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed 问题解决
# 报错信息
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed
# 问题原因
# 根据网上资料就是说: multiprocessing 会对调用的函数进行序列号,而类函数不支持
# 备注: 具体原因待查
# 解决方法 —— 类函数不带返回值
# 1. 在类之外定义调用函数
def run_class_fun(class_name, msg):
class_name.test_func(msg) # 2. 修改 apply_async 调用方式
pool.apply_async(run_class_fun, args=(self, x, ))
# 第一个参数为类外调用函数名
# 第二个参数args的第一个参数为 self, 第二个为类函数参数
# 解决方法 —— 类函数带返回值
# 1. 在类之外定义调用函数
def run_class_fun(class_name, msg):
return class_name.test_func(msg) # 2. 修改 apply_async 调用方式
res.append(pool.apply_async(run_class_fun, args=(self, x, )))
# 第一个参数为类外调用函数名
# 第二个参数args的第一个参数为 self, 第二个为类函数参数
# 全部代码
# -*- coding: utf-8 -*- import multiprocessing
import time class TestClass(object):
def __init__(self):
print('init') def test_func(self, vm_id):
vm_dict = {}
cpu_rate = '22.{}'.format(vm_id)
mem_rate = '33.{}'.format(vm_id)
vm_dict.update({
'vm_id': vm_id,
'cpu_rate': cpu_rate,
'mem_rate': mem_rate
})
return vm_dict def run(self):
res = []
pool = multiprocessing.Pool(processes=10)
for x in range(1, 100):
res.append(pool.apply_async(run_class_fun, args=(self, x, )))
pool.close()
pool.join()
return res def run_class_fun(class_name, msg):
return class_name.test_func(msg) if __name__ == '__main__':
print('----------------START------------------')
t1 = time.time()
# pool = multiprocessing.Pool(processes=10)
# res = []
# for x in range(1, 100):
# res.append(pool.apply_async(run_class_fun, args=(TestClass(), x)))
# pool.close()
# pool.join()
tc = TestClass()
res = tc.run()
print('----------------POOL OVER------------------')
print(time.time()-t1) vm_infos = []
for r in res:
print(r.get())
vm_infos.append(r.get()) print(vm_infos) print('----------------ALL OVER------------------')
print(time.time()-t1)
Python2.7 PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed 问题解决的更多相关文章
- PicklingError: Can't pickle <type 'generator'>: it's not found as __builtin_
多进程传递 参数时,需要是python系统已知的,不然不知道怎么序列化
- python2,socket多进程的错误pickle.PicklingError: Can't pickle
python2,socket多进程的错误pickle.PicklingError: Can't pickle 源码: #coding:utf-8 import socket import pickle ...
- pickle模块 no attribute 'dumps'
今天写了一个pickle.py的文件练习pickle模块,代码如下: import pickle dic = {"linga": ('football',)} dic2 = {&q ...
- chrome下input[type=text]的placeholder不垂直居中的问题解决
http://blog.csdn.net/do_it__/article/details/6789699 <input type="text" placeholder=&qu ...
- springboot jpa mongodb 整合mysql Field in required a bean of type that could not be found Failed to load ApplicationContext
1.完整报错 *************************** APPLICATION FAILED TO START *************************** Descripti ...
- Qt深入:不能不知道的Type、Attribute和Flags
Qter高手与新手的区别在于:知道还是不知道 Qt不是开发语言,所以无所谓谁厉害.但使用他的Qter却有着差异,也许是面向对象语言本身的.或者实际经验上的.而对于Qt本身来说,高手与新手最显著的差异在 ...
- python multiprocess pool模块报错pickling error
问题 之前在调用class内的函数用multiprocessing模块的pool函数进行多线程处理的时候报了以下下错误信息: PicklingError: Can't pickle <type ...
- python 多进程使用总结
python中的多进程主要使用到 multiprocessing 这个库.这个库在使用 multiprocessing.Manager().Queue时会出问题,建议大家升级到高版本python,如2 ...
- python多进程并发进程池Pool
简介: python中的多进程主要使用到 multiprocessing 这个库.低版本python这个库在使用 multiprocessing.Manager().Queue时会出问题,建议大家升级 ...
随机推荐
- 资深阿里程序员一一为你解刨Web前端知识体系结构,付出与收获成正比!
只要接触过前端,都会指导web前端的知识主要由三部分组成:分别为静态html,样式css,动态javascript(简称js)这三大部分组成.其三部分组成的一个体系的复杂程度不亚于其他一门技术的复杂程 ...
- docker 容器中 apt-get install 软件时,提示无法定位软件包
[解决] 执行 apt-get update 然后再进行安装,即可. (完)
- rhel7 编写CMakeList.txt编译运行MySQL官方例子代码
注:若需要参考rhel7上安装MySQL 请 点击此处 1.下面MySQL链接库版本用到了boost(若需要请到官网下载最新链接库和文档和C++连接数据库操作示例) Red Hat Enterpris ...
- Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available
连接elasticsearch已经成功,但是会报以下错误,字面意思是节点不可用这样 Exception in thread "main" NoNodeAvailableExcept ...
- HTTPS连接建立过程(单向&双向)
HTTPS连接建立过程(单向&双向) 什么是https SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Securit ...
- 使用原生js来控制、修改CSS伪元素的方法总汇, 例如:before和:after
在网页中,如果需要使用辅助性/装饰性的内容的时候,我们不应该直接写在HTML中,这样会影响真正的内容,这就需要使用伪元素了,这是由于css的纯粹语义化是没有意义的.在使用伪元素的时候,会发现js并不真 ...
- ShuffleNetV1/V2简述 | 轻量级网络
ShuffleNet系列是轻量级网络中很重要的一个系列,ShuffleNetV1提出了channel shuffle操作,使得网络可以尽情地使用分组卷积来加速,而ShuffleNetV2则推倒V1的大 ...
- 关于display的box和flex布局
关于二者的区别于联系,在知乎上看到有人这么回答的 flex 2012年的语法,也将是以后标准的语法,大部分浏览器已经实现了无前缀版本. box是2009年的语法,已经过时,是需要加上对应前缀的. 另外 ...
- Flask——实现上传功能
1.实例 #!-*-coding=utf-8-*- # from flask import Flask # # app = Flask(__name__) # # # @app.route('/') ...
- Activity启动流程分析
我们来看一下 startActivity 过程的具体流程.在手机桌面应用中点击某一个 icon 之后,实际上最终就是通过 startActivity 去打开某一个 Activity 页面.我们知道 A ...