我遇到的一些用途:
1)将程序的状态数据保存到磁盘,以便它可以在重新启动时从中断处继续执行(持久性)
2)在多核或分布式系统中通过TCP连接发送python数据(编组)
3)将python对象存储在数据库中
4)将任意python对象转换为字符串,以便可以将其用作字典键(例如,用于缓存和备忘录)。
最后一个有一些问题-两个相同的对象可以被腌制并导致不同的字符串-甚至相同的对象两次被腌制也可以具有不同的表示形式。这是因为泡菜可以包含参考计数信息。
为了强调@lunaryorn的评论- 切勿从不可靠的来源获取字符串,因为精心制作的pickle可以在系统上执行任意代码。例如,请参阅https://blog.nelhage.com/2011/03/exploiting- pickle/