code: def run(
      strategyClass, address, port, workerCount=None, workerName=None
  ):
      """Executes one or more worker processes that will run a strategy with the bars and parameters supplied by the server.
  
      :param strategyClass: The strategy class.
      :param address: The address of the server.
      :type address: string.
      :param port: The port where the server is listening for incoming connections.
      :type port: int.
      :param workerCount: The number of worker processes to run. If None then as many workers as CPUs are used.
      :type workerCount: int.
      :param workerName: A name for the worker. A name that identifies the worker. If None, the hostname is used.
      :type workerName: string.
      """
  
      assert workerCount is None or workerCount > 0
      if workerCount is None:
          workerCount = multiprocessing.cpu_count()
  
      workers = []
      # Build the worker processes.
      for i in range(workerCount):
          workers.append(
              multiprocessing.Process(
                  target=worker_process,
                  args=(strategyClass, address, port, workerName),
              )
          )
  
      # Start workers
      for process in workers:
          process.start()
  
      # Wait workers
      for process in workers:
          process.join()
  
imports: import socket
  import multiprocessing
  import retrying
  from six.moves import xmlrpc_client
  import pyalgotrade.logger
  from pyalgotrade import barfeed
  from pyalgotrade.optimizer import serialization
label_desc: Use image node_id 4 for calling a global function with example usage: run(strategyClass, address, port, workerCount, workerName) without return types