Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hiểu về Python Pickling với ví dụ

Trong bài viết này, chúng ta sẽ tìm hiểu về pickling các kiểu dữ liệu khác nhau trong Python. Chúng ta có thể pickle Boolean, Integer, Float, Complex number, String, Tuple, List, Set và dictionary chứa các đối tượng có thể pickle. Một số thực thể như generator, inner local class, lambda function không thể pickle.

Pickling là gì?

Pickling liên quan đến chu trình liên tục của serializing và de-serializing các thực thể Python kiểu object và cấu trúc liên quan, cũng được gọi là marshalling hoặc flattening. Điều này liên quan đến việc chuyển đổi một object nằm trong bộ nhớ thành dạng byte có thể lưu trên disk hoặc gửi qua mạng cục bộ.

Ràng buộc trong việc sử dụng?

Khi chúng ta muốn chia sẻ dữ liệu sử dụng các ngôn ngữ lập trình khác nhau, việc dùng module pickle không được ưu tiên. Điều này có nghĩa là tương thích đa nền tảng không được đảm bảo.

Pickling có thể thực hiện trên dữ liệu thô mà không cần xử lý file. Trong module này, chúng ta sẽ tìm hiểu cách chúng ta có thể pickle dữ liệu thô thành file nhị phân bằng quá trình serialization.

Ví dụ

# Python pickling
import pickle as pk

def learnData():
    # Dữ liệu để lưu trong database
    dict_1 = {'tutorial': 'point', 'Python': '3.x'}
    dict_2 = {'Cấu trúc dữ liệu': 'dictionary', 'pickling': 'serialization'}
    # Database
    db = {}
    db['1'] = dict_1
    db['2'] = dict_2
    # Mở file nhị phân dùng file pointer ở chế độ append
    fp = open('Newfile', 'ab')
    # Nguồn, đích
    pk.dump(db, fp)
    fp.close()

def displayData():
    # Mở file nhị phân dùng file pointer ở chế độ đọc
    fp = open('Newfile', 'rb')
    db = pk.load(fp)
    for i in db:
        print(i, '=>', db[i])
    fp.close()

if __name__ == '__main__':
    learnData()
    displayData()

Kết quả

dict_1 = {'tutorial': 'point', 'Python': '3.x'}
dict_2 = {'Cấu trúc dữ liệu': 'dictionary', 'pickling': 'serialization'}

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu cách pickle và unpickle trong Python 3.x hoặc các phiên bản trước đó sử dụng module pickle tích hợp sẵn.