Python —— pickle序列化与反序列化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python —— pickle序列化与反序列化相关的知识,希望对你有一定的参考价值。
Json可以在不同语言之间使用,而pickle只能在Python使用
Json不能序列化函数,而pickle可以。但是程序使用pickle.dump序列化函数后,执行该函数的内存就会释放,在另一个程序用pickle.load重新打开读取到的内存地址对应的空间已被释放,所以无法执行该函数:
1 #_*_coding:utf-8_*_ 2 #__author__ = "csy" 3 import pickle 4 def sayhi(name): 5 print("hello,",name) 6 7 info = { 8 ‘name‘:‘csy‘, 9 ‘age‘:‘31‘, 10 ‘job‘:‘工人‘, 11 ‘func‘:sayhi 12 } 13 f = open("test.text","wb") 14 pickle.dump(info,f) #相当于f.write(pickle.dumps(info)) 15 f.close()
为了演示不报错,于是将被序列化的函数sayhi复制到调用pickle.load的Python文件:
1 #_*_coding:utf-8_*_ 2 #__author__ = "csy" 3 import pickle 4 def sayhi(name): 5 print("hello,",name) 6 7 f = open("test.text","rb") 8 data = pickle.load(f) #相当于data = pickle.loads(f.read()) 9 f.close() 10 11 print(data) 12 print(data[‘func‘](‘csy‘))
输出:
{‘func‘: <function sayhi at 0x000000000111FEA0>, ‘job‘: ‘工人‘, ‘name‘: ‘csy‘, ‘age‘: ‘31‘}
hello, csy
None
以上是关于Python —— pickle序列化与反序列化的主要内容,如果未能解决你的问题,请参考以下文章