解决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 list中append()与extend()用法分享
Mar 24 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
Aug 09 Python
Python中zip()函数的简单用法举例
Sep 02 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 Python
Python批量修改xml的坐标值全部转为整数的实例代码
Nov 26 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 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发送post请求的三种方法
2014/02/11 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
Python读取键盘输入的2种方法
2015/06/16 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
python的flask框架难学吗
2020/07/31 Python
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
关键字final的用法
2013/10/02 面试题
DOM和JQuery对象有什么区别
2016/11/11 面试题
大学生评语大全
2014/04/18 职场文书
团干部培训方案
2014/06/03 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
布达拉宫导游词
2015/02/02 职场文书
新教师个人工作总结
2015/02/06 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
工作感言一句话
2015/08/01 职场文书
话题作文之呼唤
2019/12/18 职场文书