解决python多线程报错:AttributeError: Can't pickle local object问题


Posted in Python onApril 08, 2020

报错信息:

Traceback (most recent call last):
File “D:/flaskProject/test.py”, line 35, in test
pool.apply(self.out, args=(i,))
File “Python37-32\lib\multiprocessing\pool.py", line 261, in apply
return self.apply_async(func, args, kwds).get()
File "\lib\multiprocessing\pool.py”, line 657, in get
raise self._value
File “\Python37-32\lib\multiprocessing\pool.py", line 431, in _handle_tasks
put(task)
File "\Python37-32\lib\multiprocessing\connection.py”, line 206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File “*\Python37-32\lib\multiprocessing\reduction.py”, line 51, in dumps
cls(buf, protocol).dump(obj)
TypeError: can't pickle _thread._local objects

原类的构造函数:

class threadtest:

def __init__(self, ipList, user, password):
 self.ipList = ipList
 self.httpAuth = HTTPDigestAuth(user, password)
 return

def out(self, i):
 url = "http://" + i + "/name"
 response = requests.get(url, self.httpAuth)
 print(response.text)
 return

def test(self):
 pool = Pool(processes=2)
 for i in self.ipList:
 pool.apply(self.out, args=(i,))
 pool.close()
 pool.join()
 return
if name == ‘main':
ipList = [‘192.168.2.1', ‘192.168.2.2', ‘192.168.2.3', ‘192.168.2.4', ‘192.168.2.5', ]
a = threadtest(ipList, ‘admin', ‘admin')
a.test()

原因:

在class中对属性进行初始化使用了其它类返回的句柄进行初始化导致,HTTPDigestAuth的返回值不能进行序列化,也就是不能作为cls(buf, protocol).dump(obj)的参数进行序列化。

将self.httpAuth = HTTPDigestAuth(httpUser, httpPassword)修改为:

self.httpUser
self.httpPassword

并将函数HTTPDigestAuth放到类的方法中

修改后:

class threadtest:

def __init__(self, ipList, user, password):
 self.ipList = ipList
 self.user = user
 self.password = password
 return

def out(self, i):
 url = "http://" + i + "/name"
 response = requests.get(url, HTTPDigestAuth(self.user, self.password))
 print(response.text)
 return

def test(self):
 pool = Pool(processes=2)
 for i in self.ipList:
 pool.apply(self.out, args=(i,))
 pool.close()
 pool.join()
 return
if name == ‘main':
ipList = [‘192.168.2.1', ‘192.168.2.2', ‘192.168.2.3', ‘192.168.2.4', ‘192.168.2.5', ]
a = threadtest(ipList, ‘admin', ‘admin')
a.test()

以上这篇解决python多线程报错:AttributeError: Can't pickle local object问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python图像常规操作
Nov 11 Python
Python实现程序判断季节的代码示例
Jan 28 Python
Python之修改图片像素值的方法
Jul 03 Python
实例详解Python装饰器与闭包
Jul 29 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
pandas 对group进行聚合的例子
Dec 27 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
详细介绍python类及类的用法
May 31 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 #Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 #Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 #Python
python操作yaml说明
Apr 08 #Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 #Python
python将音频进行变速的操作方法
Apr 08 #Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 #Python
You might like
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
js制作提示框插件
2020/12/24 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
python实现查询苹果手机维修进度
2015/03/16 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
python 反向输出字符串的方法
2018/07/16 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
食品安全汇报材料
2014/08/18 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
Golang 切片(Slice)实现增删改查
2022/04/22 Golang