python 序列化数据:pickle与json ,dumps与loads,解决can't pickle _thread.lock objects

python 序列化数据:pickle与json

pickle 只能在python中用python文件间序列化,实现了两个python 内存数据的交互(可序列化任何对象(类,列表)) json 在任何软件间可以在内存数据之间的交互,只能序列化常规的对象(列表 ,字典等)

#!usr/bin/env python
#_*_ coding:utf-8 _*_

import chardet
import pickle
li=['a','hello','world','ok']
print('pickle.dumps结果')
print(pickle.dumps(li))  #把对象序列释放成str
print(type(pickle.dumps(li)))
#dumps反序列化
print('pickle.loads结果')
dumps=pickle.dumps(li)  #注意dumps与dump(文件)
print(pickle.loads(dumps))   #these default to 'ASCII' and 'strict'

#dump反序列化 闭含过文件形式
print('pickle.dump与pickle.load结果')
dumps=pickle.dump(li,open('dump.txt','wb+'))
print(pickle.load(open('dump.txt','rb')))


#pickle 只能在python中用python文件间序列化,实现了两个python 内存数据的交互(可序列化任何对象(类,列表))
#json 在任何软件间可以在内存数据之间的交互,只能序列化常规的对象(列表 ,字典等)


import json
#用法同pickle,dumps与loads,dump与load
dict={'name':'zhongguo','age':'1949'}
print('json案例展示')
print(json.dumps(dict))  #str  #将dictjson序列化成str
print(type(json.dumps(dict)))
print(json.loads(json.dumps(dict)))
print(type(json.loads(json.dumps(dict))))#将json.dumps(dict)序列化回dict

更新时间:20190107 解决pickle 报错TypeError: can’t pickle _thread.lock objects

查看原因后发现:模型调用了4个threads ,也就是说4个小线程导致报错,没有找到设置参数,

后来查看发现, 进程池内部处理使用了pickle模块(用于python特有的类型和python的数据类型间进行转换)中的dump(obj, file, protocol=None,)方法对参数进行了封装处理.

于是最后使用使用joblib解决, joblib更适合大数据量的模型,且只能往硬盘存储,不能往字符串存储

from sklearn.externals import joblib
joblib.dump(clf,'filename.pkl')
clf=joblib.load('filename.pkl')

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏月色的自留地

从零开始学习PYTHON3讲义(十四)写一个mp3播放器

通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏。随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作。 大多...

33840
来自专栏月色的自留地

从零开始学习PYTHON3讲义(十二)画一颗心送给你

上一节课我们主要讲解了数值计算和符号计算。数值计算的结果,很常用的目的之一就是用于绘制图像,从图像中寻找公式的更多内在规律。

33730
来自专栏程序生活

Python 字符串切割 str.split()和re.split()

将一个字符串按找找某个字符进行分割,我们可以使用str.split(),也可以使用re.split(),相比之下re.split()更加灵活。我们下面看一个例子...

27020
来自专栏机器学习算法与Python学习

教程 | 十分钟学会函数式 Python

函数式编程到底是什么?本文将详解其概念,同时分享怎样在 Python 中使用函数式编程。主要内容包括列表解析式和其他形式的解析式。

13330
来自专栏灯塔大数据

技术 | Python的从零开始系列连载(三十四)

为了解答大家学习Python时遇到各种常见问题,小灯塔特地整理了一系列从零开始的入门到熟练的系列连载,每周五准时推出,欢迎大家学积极学习转载~

14620
来自专栏AI科技评论

工具 | ImagePy——UI界面支持开放插件的Python开源图像处理框架

AI 科技评论按,ImagePy 是一款 python 开源图像处理框架,其 UI 界面支持开放插件。在 github:https://github.com/...

30820
来自专栏日常学python

一个机械生的Python转行自述

在此把这段转行经历发出来,给正在转行之路上努力着的小伙伴,做一个参考,只要你好好努力,工作肯定会有的。

1.4K40
来自专栏生信小驿站

Python从零开始第三章数据处理与分析python中的dplyr(4)目录

可以使用separate(column,into,sep =“[\ W _] +”,remove = True,convert = False,extra ='...

12320
来自专栏机器学习算法与Python学习

简单易用NLP框架Flair发布新版本!(附教程)

Flair 是 Zalando Research 开发的一款简单易用的 Python NLP 库,近日,Flair 0.4 版发布!

16540
来自专栏生信小驿站

Python从零开始第三章数据处理与分析python中的dplyr(5)目录

===============================================

11630

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励