1 scrap public avec le tag #session management
Got it 👍 — let’s go step by step and make `dill` clear and practical. --- # 🔎 What is `dill`? * `dill` is a **Python library** that extends the standard `pickle` module. * `pickle` can serialize (“save”) Python objects into a file and later **deserialize** (“load”) them back. * But `pickle` has **limitations**: it cannot handle things like: * user-defined functions * lambdas * classes defined inside functions * some iterators, generators, closures 👉 `dill` overcomes many of these limitations. It can serialize almost anything in Python—including entire **interactive sessions**. --- # 🚀 How to Install ```bash pip install dill ``` --- # 🧪 Basic Usage ```python import dill x = 42 y = [1, 2, 3] def greet(name): return f"Hello {name}!" # ---- Save session ---- dill.dump_session("session.pkl") # (Restart Python...) # ---- Load session ---- dill.load_session("session.pkl") print(x) # 42 print(y) # [1, 2, 3] print(greet("AI")) # Hello AI! ``` ⚡ Notice: Even the function `greet` is restored — this wouldn’t work with `pickle`. --- # 🧩 What Can `dill` Save? ✅ Numbers, strings, lists, dicts (like pickle) ✅ Functions (including lambdas and closures) ✅ Classes, methods, and instances ✅ Generators, iterators ✅ Entire interactive sessions ❌ What it may still struggle with: * Open file handles, sockets, database connections (not serializable in principle) * OS-level resources (threads, processes) --- # 🧰 Core APIs 1. **Save one object** ```python dill.dump(obj, open("file.pkl", "wb")) ``` 2. **Load one object** ```python obj = dill.load(open("file.pkl", "rb")) ``` 3. **Save entire session (all variables)** ```python dill.dump_session("session.pkl") ``` 4. **Load entire session** ```python dill.load_session("session.pkl") ``` --- # 🆚 `pickle` vs `dill` | Feature | `pickle` | `dill` | | ------------------- | -------- | ------ | | Save basic types | ✅ | ✅ | | Save custom classes | ✅ | ✅ | | Save functions | ❌ | ✅ | | Save lambdas | ❌ | ✅ | | Save closures | ❌ | ✅ | | Save entire session | ❌ | ✅ | So: * If you just need **simple data** (numbers, arrays, dicts), `pickle` is fine. * If you want to checkpoint your **whole working environment** (like Jupyter does), `dill` is the tool. --- # ⚡ Practical Tip You can make a quick utility file `session_utils.py`: ```python import dill def save_session(filename="session.pkl"): dill.dump_session(filename) def load_session(filename="session.pkl"): dill.load_session(filename) ``` Then in any script: ```python from session_utils import save_session, load_session x = 123 save_session("my.pkl") # Later... load_session("my.pkl") print(x) # 123 ``` --- 👉 Would you like me to show you how to use `dill` specifically for a **step-by-step experiment workflow** (like Jupyter Notebook, where you checkpoint after each cell), or just for a one-shot "save everything at once" style?
Envie de créer votre propre contenu tagué ?
Commencer