Pickling و Unpickling در پایتون چیست؟ همه چیز درباره ذخیرهسازی دادهها

فهرست مطالب این نوشته
TogglePickling و Unpickling در پایتون دو روش برای ذخیرهسازی و بازیابی دادهها هستند. با Pickling میتوانید هر نوع آبجکتی را به فرمت باینری تبدیل کنید و در یک فایل ذخیره کنید. سپس با Unpickling، دقیقا همان آبجکت را (با همان ساختار و مقادیر) دوباره از فایل بخوانید و بازسازی کنید.
در ادامه همراه ما باشید تا بیشتر بررسی کنیم که Pickling و Unpickling در پایتون به چه معنی است.

Serialization چیست و چرا در پایتون مهم است؟
- در تعریف ساده: Serialization یعنی تبدیل یک شیء پایتون به فرمی که بتوان آن را ذخیره کرد یا از طریق شبکه فرستاد.
در اینجا ما دقیقا به دنبال همین اتفاق هستیم: ذخیرهسازی آبجکت در پایتون.
بدون Serialization، شیء شما فقط داخل حافظه موقت برنامه میماند و هیچ راهی برای ذخیره یا انتقال آن وجود ندارد.
پس واضح است که این فرآیند چقدر مهم است، مخصوصا وقتی پروژههای بزرگتری را مدیریت میکنید.
Pickling و Unpickling در پایتون به چه معنی است؟
حالا Pickling و Unpickling در پایتون یعنی چه؟ Pickling یعنی تبدیل یک آبجکت پایتون (مثل لیست، دیکشنری یا حتی یک مدل یادگیری ماشین) به یک دنبالهی بایتها تا بتوانید آن را در یک فایل ذخیره کنید یا از طریق شبکه منتقل کنید. این فرآیند با استفاده از توابع pickle.dump() یا pickle.dumps() انجام میشود.
Unpickling دقیقا برعکس است: گرفتن آن بایتها و بازگرداندنشان به همان آبجکت اصلی که قبل از Pickling داشتید. برای این کار از pickle.load() یا pickle.loads() استفاده میکنید. مزیت بزرگش این است که نوع و ساختار آبجکت کاملا حفظ میشود، انگار که هیچ وقت حذف یا جابهجا نشده بوده است.
این دو فرآیند در کنار هم اجازه میدهند که اطلاعات را با خیال راحت بین برنامههای مختلف جابهجا کنید یا در زمان نیاز دوباره بارگذاری نمایید.
چطور با ماژول pickle یک آبجکت را ذخیره کنیم؟
بیایید با یک مثال واقعی جلو برویم. فرض کنید یک دیکشنری از اطلاعات شخصی دارید:
import pickle
person = {“name”: “Alice”, “age”: 30, “gender”: “female”}
with open(“person.pickle”, “wb”) as file:
pickle.dump(person, file)
این کار کار با فایل pickle را نشان میدهد: آبجکت person را به فرمت باینری تبدیل میکنیم و داخل یک فایل ذخیره میکنیم. به همین راحتی!
حالا اگر بخواهیم این دادهها را بازیابی کنیم:
with open(“person.pickle”, “rb”) as file:
data = pickle.load(file)
print(data)
و خروجی میشود:
{‘name’: ‘Alice’, ‘age’: 30, ‘gender’: ‘female’}
پس عملیات ذخیره و بازیابی دادهها در پایتون بسیار ساده ولی قدرتمند است.
تفاوت بین Pickling و Unpickling چیست؟
اگر بخواهیم خیلی شفاف تفاوت بین Pickling و Unpickling در پایتون را بگوییم:
ویژگی | Pickling | Unpickling |
---|---|---|
روند | تبدیل شیء به bytes | تبدیل bytes به شیء اصلی |
توابع | pickle.dump, pickle.dumps | pickle.load, pickle.loads |
خروجی | فایل یا دادهی باینری | شیء بازسازی شده |
قابلیتها | پشتیبانی از اشیاء پیچیده و ارجاعات داخلی | بازیابی دقیق ساختار اصلی |
تفاوت بین Pickling و JSON در پایتون
برای کسانی که با برنامهنویسی پایتون آشنایی دارند یک سوال پیش میآید: چرا باید از Pickle استفاده کنیم وقتی JSON هم هست؟ بیاید بررسی کنیم:
- JSON یک فرمت متنی قابل خواندن توسط انسان است و تقریبا با تمام زبانهای برنامهنویسی کار میکند.
- Pickle مخصوص پایتون است، فرمت آن باینری است و میتواند اشیاء بسیار پیچیدهتر (مثلا توابع یا کلاسهای سفارشی) را سریالسازی کند.
بنابراین اگر هدفتان انتقال دادهها بین زبانهای مختلف است، JSON ولی اگر فقط در پایتون کار میکنید، Pickle را انتخاب کنید.
کاربردهای جالب Pickle را بشناسید!
شاید با خودتان بگویید: «خب اینا که تئوری بود، در عمل چطور است؟» بگذارید چند مثال جالب واقعی را با هم ببینیم:
- ذخیرهی لیستها: یک لیست از نامها را سریع ذخیره و دوباره بازیابی کنید.
- آرایههای NumPy: به راحتی آرایههای سنگین ۱۰x۱۰ یا حتی خیلی بزرگتر را ذخیره کنید.
- DataFrameهای Pandas: اگر دادههای عظیم آماری دارید، Pickle میتواند نسبت به CSV سرعت ذخیره و بازیابی را تا ۳۰ برابر بیشتر کند.
- مدلهای یادگیری ماشین: پس از آموزش یک مدل (مثلا رگرسیون خطی)، آن را Pickle کنید تا در آینده بدون نیاز به آموزش مجدد استفاده شود.
نکاتی که باید همیشه در مورد Pickle بدانید
کار با Pickle ساده است اما یکسری نکات مهم هم دارد. برای مثال هیچ وقت دادههای pickled ناشناس را مستقیما بارگذاری نکنید زیرا ممکن است کدی مخرب اجرا شود. یا باید بدانید که Pickle فایلهایش را با نسخهی خاصی از پایتون سازگار میکند. مراقب باشید فایلهای Pickled را بین نسخههای مختلف پایتون جابهجا نکنید مگر با دقت.
اگر نیاز دارید دادهها را بین زبانهای مختلف جابهجا کنید یا امنیت بیشتری میخواهید، به جای Pickle از فرمتهایی مثل JSON، HDF5 یا Apache Thrift استفاده کنید. لازم به ذکر است که همیشه برای فایلهای Pickle از پسوند .pkl یا .pickle استفاده کنید تا بعدا راحتتر آنها را پیدا کنید.
Pickling و Unpickling در پایتون؛ ابزار کاربردی برنامهنویسان!
در مطلب بالا متوجه شدید که بدون Pickling، ذخیرهسازی و انتقال اشیاء پایتون تقریبا غیرممکن میشود. یادگیری Pickle در پایتون یعنی باز کردن درهای یک دنیا از امکانات ذخیرهسازی هوشمندانه و سریع.
برای یادگیری عمیقتر مباحثی شبیه به Pickling و Unpickling در پایتون ما در آکادمی چابک، یک سری دورههای متنوع طراحی کردهایم تا هر شخص علاقهمندی بتواند با هر سطحی دانش پایتوناش را عمیقتر کند. برای اطلاعات بیشتر با ما تماس بگیرید.
منبع:
دیدگاهتان را بنویسید