code: def to_pickle(
      obj, path, compression="infer", protocol=pkl.HIGHEST_PROTOCOL
  ):
      """
      Pickle (serialize) object to file.
  
      Parameters
      ----------
      obj : any object
          Any python object.
      path : str
          File path where the pickled object will be stored.
      compression : {'infer', 'gzip', 'bz2', 'zip', 'xz', None}, default 'infer'
          A string representing the compression to use in the output file. By
          default, infers from the file extension in specified path.
  
          .. versionadded:: 0.20.0
      protocol : int
          Int which indicates which protocol should be used by the pickler,
          default HIGHEST_PROTOCOL (see [1], paragraph 12.1.2). The possible
          values for this parameter depend on the version of Python. For Python
          2.x, possible values are 0, 1, 2. For Python>=3.0, 3 is a valid value.
          For Python >= 3.4, 4 is a valid value. A negative value for the
          protocol parameter is equivalent to setting its value to
          HIGHEST_PROTOCOL.
  
          .. [1] https://docs.python.org/3/library/pickle.html
          .. versionadded:: 0.21.0
  
      See Also
      --------
      read_pickle : Load pickled pandas object (or any object) from file.
      DataFrame.to_hdf : Write DataFrame to an HDF5 file.
      DataFrame.to_sql : Write DataFrame to a SQL database.
      DataFrame.to_parquet : Write a DataFrame to the binary parquet format.
  
      Examples
      --------
      >>> original_df = pd.DataFrame({"foo": range(5), "bar": range(5, 10)})
      >>> original_df
         foo  bar
      0    0    5
      1    1    6
      2    2    7
      3    3    8
      4    4    9
      >>> pd.to_pickle(original_df, "./dummy.pkl")
  
      >>> unpickled_df = pd.read_pickle("./dummy.pkl")
      >>> unpickled_df
         foo  bar
      0    0    5
      1    1    6
      2    2    7
      3    3    8
      4    4    9
  
      >>> import os
      >>> os.remove("./dummy.pkl")
      """
      path = _stringify_path(path)
      f, fh = _get_handle(
          path, "wb", compression=compression, is_text=False
      )
      if protocol < 0:
          protocol = pkl.HIGHEST_PROTOCOL
      try:
          f.write(pkl.dumps(obj, protocol=protocol))
      finally:
          for _f in fh:
              _f.close()
  
file_path: catboost/contrib/python/pandas/py2/pandas/io/pickle.py
imports: import warnings
  import numpy
  from numpy.lib.format import read_array, write_array
  from pandas.compat import PY3, BytesIO, cPickle, pickle_compat
  from pandas.io.common import _get_handle, _stringify_path
label_desc: Use image node_id 1 for calling a global function with example usage: to_pickle(obj, path, compression, protocol) without return types