در واقع Serialization یک فرآیند برای تبدیل شی داده مانند object پایتون یا مدل های پایتون تنسورفلو به یک فرمت خاص است. این فرمت به کاربر اجازه ذخیره یا حتی انتقال داده را می دهد. سپس داده ها هر زمان که نیاز باشد شی را با فرایندی به نام سریالایزشن بازسازی می کنند. سریالایزشن یک فرآیند مهم برای کارهای مربوط به برنامه نویسی و وب سرویس ها است.
در این مطلب با نحوه استفاده از دو کتابخانه سریالایزشن رایج در پایتون برای سریالایزشن اشیا داده ای مانند دیکشنری ها و مدل های کاربردی هوش مصنوعی مانند تنسورفلو در پایتون برای ذخیره سازی و انتقال آشنا خواهید شد.
کی و کجا استفاده کنیم؟
به ذخیره سازی و جابه جای یک مقدار مشخصی یا یک عدد صحیح فکر کنید؛ چگونه می توانید آن را در یک فایل ذخیره یا انتقال دهید؟ حال اگر بخوایم یک شی یا آرایه پیچیده و یا کلاس را در جایی ذخیره کنیم و به برنامه های دیگر منتقل کنیم؟ در اینجاست که مبحث سریالایزشن مطرح میشود که بتوان با یک فرمت استاندارد این کار را کرد
فرمت های مختلفی برای سریالایزشن داده ها وجود دارد، برای مثال JSON، XML، HDF۵، و Pickle برای اهداف مختلف JSON، یک فرم رشته قابل خواندن توسط انسان را برمی گرداند، در حالی که کتابخانه Pickle می تواند یک آرایه بایت را برگرداند.
دو روش مرسوم serialization در پایتون بسیار رایج وجود دارند که آبجکت ها داده را در پایتون سریال سازی می کنند.
برای باینری فایل ها در پایتون کتابخانه های مختلفی مانند Pickle, Marshal و HDF۵ وجود دارد ولی Marshal خیلی ابتدایی تر از Pickle ها هست به همین خاطر اکثرا از Pickle استفاده می شود.
Pickle اغلب برای تولید داده های حجیم تو حوزه هوش مصنوعی استفاده می شود که فقط تبادل دیتا بین خود کتابخانه ها استفاده شود.
نکته : کتابخانه ای Pickle امن نیست و ممکن هست موقع unpack کردن داده ها ویروس یا آسیب پذیری وارد سیستم شود در نتیجه داده های که ازشان اطمینان دارید unpack کنید. اگر می خواهید از داده مطمعن شوید که دستکاری یا آلوده نشده اند می توانید از hmac برای امضا وبررسی کردن استفاده کنید.
نمونه کد استفاده از کتابخانه ای Pickle
import pickle popular_langs=["Python","Go","Php","Js"] """ Write pickle binary file """ pik_file= open("data","wb") pickle.dump(popular_langs,pik_file) pik_file.close() """ Read pickle binary file """ load_file=open("data",'rb') load_data=pickle.load(load_file) load_file.close() print(load_data)
نمونه کد استفاده از کتابخانه ای HDF5
import h5py """ Write HDF5 binary file """ with h5py.File("test.hdf5", "w") as file: dataset = file.create_dataset("test_data", (۱۰,۲۰,۴۰,)) """ Read HDF5 binary file """ with h5py.File("test.hdf5", "r") as file: dataset = file["test_data"] print({ "data":dataset, "keys":file.keys() })
نتیجه گیری
هدف آن ساده سازی روش های ذخیره سازی داده برای یک متخصص داده است. serialization در پایتون یکی از مهم ترین ویژگی هایی است که رابط تبدیل داده ها را آسان می کند. در این مقاله در مورد چرایی نیاز به سریال سازی صحبت کرده ایم. فرآیند serialization به کاربر پایتون اجازه می دهد تا داده های خود را در کنار حفظ ساختار اصلی ارسال، دریافت و ذخیره کند.
نسخه ای کامل این مطب در لینک زیر موجود می باشد
https://devcoach.ir/سریالایزشن-پایتون-python-serialization/