解决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判断操作系统类型代码分享
Nov 22 Python
解读python logging模块的使用方法
Apr 17 Python
python for 循环获取index索引的方法
Feb 01 Python
Django框架模板的使用方法示例
May 25 Python
python实现批量视频分帧、保存视频帧
May 31 Python
selenium+Chrome滑动验证码破解二(某某网站)
Dec 17 Python
Python常用库大全及简要说明
Jan 17 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
Python读取pdf表格写入excel的方法
Jan 22 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&java(一)
2006/10/09 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
python检查指定文件是否存在的方法
2015/07/06 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
把富文本的回车转为br标签
2019/08/09 HTML / CSS
物业管理个人自我评价
2013/11/08 职场文书
初中英语教学反思
2014/01/25 职场文书
四群教育工作实施方案
2014/03/26 职场文书
个人综合鉴定材料
2014/05/23 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
党员自评材料范文
2014/12/17 职场文书
超市店长竞聘书
2015/09/15 职场文书