code: def test_can_pickle(ray_start_10_cpus_shared, restore_data_context):
      DataContext.get_current().new_execution_backend = True
      DataContext.get_current().use_streaming_executor = True
  
      ds = ray.data.range(1000000)
      it = iter(ds.iter_batches())
      next(it)
  
      # Should work even if a streaming exec is in progress.
      ds2 = cloudpickle.loads(cloudpickle.dumps(ds))
      assert ds2.count() == 1000000
  
imports: import itertools
  import random
  import threading
  import time
  from typing import Any, List
  import pandas
  import pytest
  import ray
  from ray import cloudpickle
  from ray._private.test_utils import wait_for_condition
  from ray.data._internal.execution.interfaces import ExecutionOptions, ExecutionResources, RefBundle
  from ray.data._internal.execution.operators.base_physical_operator import AllToAllOperator
  from ray.data._internal.execution.operators.input_data_buffer import InputDataBuffer
  from ray.data._internal.execution.operators.map_operator import MapOperator
  from ray.data._internal.execution.operators.map_transformer import create_map_transformer_from_block_fn
  from ray.data._internal.execution.operators.output_splitter import OutputSplitter
  from ray.data._internal.execution.streaming_executor import StreamingExecutor
  from ray.data._internal.execution.util import make_ref_bundles
  from ray.data.context import DataContext
  from ray.data.tests.conftest import *
  from ray.data.tests.util import extract_values
label_desc: Use image node_id 16 for calling a global function with example usage: test_can_pickle(ray_start_10_cpus_shared, restore_data_context) without return types