解决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函数中的函数(闭包)用法实例
Mar 15 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
python线程中同步锁详解
Apr 27 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
Python编程中类与类的关系详解
Aug 08 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
Django xadmin安装及使用详解
Oct 26 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+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
Python深入学习之对象的属性
2014/08/31 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
自查自纠工作情况报告
2014/10/29 职场文书
营业用房租赁协议书
2014/11/26 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
中学音乐课教学反思
2016/02/18 职场文书