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时会出问题,建议大家升级 ...
随机推荐
- c# 线程的优先级
前言 有时候我们希望某个线程更加重要,希望让其先运行的话.c#为我们提供了线程修改优先级.但是这样的效果有多大呢? 正文 直接放代码: static void Main(string[] args) ...
- Python-使用tkinter canvas绘制的电子时钟
#!/usr/bin/env python # -*- coding: utf-8 -*- from tkinter import * import math import threading imp ...
- css3实现炫酷的文字效果_空心/立体/发光/彩色/浮雕/纹理等文字特效
这篇文章主要整理一些css3实现的一些文字特效,分享给大家, 相信您看完会有不少的收货哦! 一.css3 空心文字 <style> .hollow{ -webkit-text-stroke ...
- css实现div多边框_box-shadow模拟多边框、outline描边实现
在css3中我们知道可以使用box-shadow属性轻松的为元素添加阴影效果,并且可以设置多组效果,每组参数值用逗号隔开.如果把box-shadow特性的两个偏移量 h-shadow .v-shado ...
- css如何设置首行文字缩进?
在HTML网页中通常一段文字都需要设置首行缩进两个文字,使页面更加美观,我们可以通过css实现这一效果,下面我们就来看一下使用css设置首行文字缩进的方法. css可以使用text-indent属性来 ...
- 使用 PostCSS 进行 CSS 处理
在 Web 应用开发中,CSS 代码的编写是重要的一部分.CSS 规范从最初的 CSS1 到现在的 CSS3,再到 CSS 规范的下一步版本,规范本身一直在不断的发展演化之中.这给开发人员带来了效率上 ...
- 「区间DP」「洛谷P3205」「 [HNOI2010]」合唱队
洛谷P3205 [HNOI2010]合唱队 题目: 题目描述 为了在即将到来的晚会上有更好的演出效果,作为 A 合唱队负责人的小 A 需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共 n 个 ...
- WPF 设置帧率
开始仔细学习WPF了 说是动画不流畅,可以通过设置帧率解决,查了很多,都说设置Timeline.DesiredFrameRateProperty, 但都没说加到哪里,在代码很多地方加上了,统统无效.最 ...
- three.js 几何体(二)
上一篇简单的介绍了几何体的构造体参数,这一篇郭先生就更加详细的说一说(十分简单的几何体我就不说了). 1. ShapeGeometry形状几何体 形状几何体方便我们从一个或多个路径形状中创建一个单面多 ...
- MCU 51-2 LED and Digital tube Test
点亮LED实验: #include <reg52.h> sbit LED1 = P1^; sbit LED2 = P1^; sbit LED8 = P1^; void main() { L ...