Python pickle()对数据进行序列化反序列化

序列化概述:

程序运行结束后,在内存中运行的变量,会被操作系统回收。序列化,就是把内存里的变量进行存储到硬盘中。反之称为反序列化

pickle:
pickle是python自带的一个包,提供了序列化和反序列化操作。

pickle.load()方法,可以从文件中反序列化出对象。

pickle.dump()方法,可以直接把对象序列化后写入文件中。、

代码实现:

在memory.py中,导入我们将要用到的包,并创建Memory类

import pickle
import os.path

class Memory:
    """
    一个简单的内存类用于封装项目操纵的数据对象
    volatile是未保存的内存
    """
    volatile = {}

    def __init__(self):
        self.load_state() # 创建时启动载入函数

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        self.save_state() # 退出时启用保存函数    

 # 执行save命令:同步保存操作,将当前redis实例的所有数据快照以rdb的形式保存到硬盘。
    def save_state(self):
        pickle.dump({'volatile': self.volatile}, open('dump.rdb', 'wb'))
        print("dump.rdb saved to disk") # 测试用

    def load_state(self):
        if os.path.exists('dump.rdb'): # 如果存在rdb快照
            state = pickle.load(open('dump.rdb', 'rb')) # 载入快照
            # 分别读取分序列化后相应的值
            self.volatile = state['volatile']

            print("dump.rdb loaded into volatile memory") #测试用

memory = Memory()

打开终端,进入python3交互环境中,输入以下代码测试:

>>>from memory import memory
>>>memory.volatile['key'] = 'value'
>>>memory.save_state()

测试结果:

Python pickle()对数据进行序列化反序列化_第1张图片

你可能感兴趣的:(Python,Devops)