diff --git a/CHANGELOG.md b/CHANGELOG.md index 4733988e8be..83c96a7fc40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ - PR #5072 Adding cython binding to `get_element` - PR #4881 Support row_number in rolling_window - PR #5068 Add Java bindings for arctan2 +- PR #5132 Support out-of-band buffers in Python pickling ## Improvements diff --git a/python/cudf/cudf/core/buffer.py b/python/cudf/cudf/core/buffer.py index dc7a502cb8b..5b06148430e 100644 --- a/python/cudf/cudf/core/buffer.py +++ b/python/cudf/cudf/core/buffer.py @@ -58,8 +58,11 @@ def __init__(self, data=None, size=None, owner=None): raise TypeError("data must be Buffer, array-like or integer") self._init_from_array_like(np.asarray(data), owner) - def __reduce__(self): - return self.__class__, (self.to_host_array(),) + def __reduce_ex__(self, protocol): + data = self.to_host_array() + if protocol >= 5: + data = pickle.PickleBuffer(data) + return self.__class__, (data,) def __len__(self): return self.size