解决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 26 Python
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
单链表反转python实现代码示例
Feb 08 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
python实现学生管理系统开发
Jul 24 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 Python
openstack中的rpc远程调用的方法
Jul 09 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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 函数语法介绍一
2009/06/14 PHP
来自phpguru得Php Cache类源码
2010/04/15 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
解析php取整的几种方式
2013/06/25 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
php使用正则验证中文
2016/04/06 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
用Python实现BP神经网络(附代码)
2019/07/10 Python
Django实现基于类的分页功能
2019/10/31 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
商务考察邀请函范文
2014/01/21 职场文书
幼儿园教师节活动方案
2014/02/02 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
优秀党员获奖感言
2014/02/18 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
表彰大会策划方案
2014/05/13 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
管理失职检讨书
2015/05/05 职场文书
肖申克的救赎观后感
2015/06/02 职场文书