解决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 相关文章推荐
动态创建类实例代码
Oct 07 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
python 产生token及token验证的方法
Dec 26 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
在django中自定义字段Field详解
Dec 03 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
Python逐行读取文件内容的方法总结
Feb 14 Python
Python装饰器用法与知识点小结
Mar 09 Python
Python调用jar包方法实现过程解析
Aug 11 Python
Django nginx配置实现过程详解
Sep 10 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 随机数的深入理解
2013/06/05 PHP
PHP小技巧之函数重载
2014/06/02 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
对联广告js flash激活
2006/10/19 Javascript
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
jquery自定义表格样式
2015/11/23 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
python中Mako库实例用法
2020/12/31 Python
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
广州迈达威.net面试题目
2012/03/10 面试题
企事业单位求职者的自我评价
2013/12/28 职场文书
小区门卫岗位职责
2013/12/31 职场文书
房地产广告策划方案
2014/05/15 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
秋季运动会加油词
2015/07/18 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书