解决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/ironpython:从入门到精通
Oct 02 Python
python实现的阳历转阴历(农历)算法
Apr 25 Python
python多线程编程中的join函数使用心得
Sep 02 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
面向初学者的Python编辑器Mu
Oct 08 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
python集合是否可变总结
Jun 20 Python
获取django框架orm query执行的sql语句实现方法分析
Jun 20 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python开根号实例讲解
Aug 30 Python
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
May 24 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
python操作日期和时间的方法
2014/03/11 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
django 环境变量配置过程详解
2019/08/06 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
党员创先争优承诺书
2014/03/26 职场文书
活动总结报告格式
2014/05/09 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
技能培训通讯稿
2015/07/18 职场文书
学雷锋活动简报
2015/07/20 职场文书
golang json数组拼接的实例
2021/04/28 Golang
PyTorch的Debug指南
2021/05/07 Python
JS高级程序设计之class继承重点详解
2022/07/07 Javascript