解决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采集腾讯新闻实例
Jul 10 Python
python自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
python通过正则查找微博@(at)用户的方法
Mar 13 Python
使用Python脚本生成随机IP的简单方法
Jul 30 Python
Python实现感知机(PLA)算法
Dec 20 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
python模拟实现分发扑克牌
Apr 22 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
Jul 01 Python
Django基础CBV装饰器和中间件
Mar 22 Python
Golang Web 框架Iris安装部署
Aug 14 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
很让人受教的 提高php代码质量36计
2012/09/05 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
js 动态选中下拉框
2009/11/26 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
使用Scrapy爬取动态数据
2018/10/21 Python
python zip()函数使用方法解析
2019/10/31 Python
python 实现矩阵按对角线打印
2019/11/29 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
英语系毕业生自荐信
2013/10/31 职场文书
委托书怎样写
2014/08/30 职场文书
合伙经营协议书范本
2014/09/13 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
营销与策划实训报告
2014/11/05 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫