code: def GetCustomerIDs(client):
    
    # For this example, we will use ManagedCustomerService to get all IDs in
    # hierarchy that do not belong to MCC accounts.
    managed_customer_service = client.GetService('ManagedCustomerService',
                                                 version='v201809')
  
    offset = 0
  
    # Get the account hierarchy for this account.
    selector = {
        'fields': ['CustomerId'],
        'predicates': [{
            'field': 'CanManageClients',
            'operator': 'EQUALS',
            'values': [False]
        }],
        'paging': {
            'startIndex': str(offset),
            'numberResults': str(PAGE_SIZE)
        }
    }
  
    # Using Queue to balance load between processes.
    queue = multiprocessing.Queue()
    more_pages = True
  
    while more_pages:
      page = managed_customer_service.get(selector)
  
      if page and 'entries' in page and page['entries']:
        for entry in page['entries']:
          queue.put(entry['customerId'])
      else:
        raise Exception('Can\'t retrieve any customer ID.')
      offset += PAGE_SIZE
      selector['paging']['startIndex'] = str(offset)
      more_pages = offset < int(page['totalNumEntries'])
  
    return queue
docs: Retrieves all CustomerIds in the account hierarchy.
  
    Note that your configuration file must specify a client_customer_id belonging
    to an AdWords manager account.
  
    Args:
      client: an AdWordsClient instance.
    Raises:
      Exception: if no CustomerIds could be found.
    Returns:
      A Queue instance containing all CustomerIds in the account hierarchy.