# lock for reference base lock = Lock() # get hosts from zabbix analyzers = get_hosts() # prepare data for thread pool data_to_process = [(a["ip"], a["host"], lock, rb) for a in analyzers.values() if a.get("ip", None)] # init thread pool sencore_pool = ThreadPool( processes=len(data_to_process) ).map_async(sencore_start, data_to_process) # wait until all threads done counter = 0 while not sencore_pool.ready() and counter < TIMEOUT: time.sleep(0.1) counter += 0.1 if counter >= TIMEOUT: exit(1) # get results from thread pool data = sencore_pool.get() # # generate Zabbix metrics zabbix_metrics_all = [to_zabbix(d[0], d[1]) for d in data if d] # autodiscovery metrics zabbix_metrics_discovery = reduce(add, [zma["autodiscovery"] for zma in zabbix_metrics_all]) zabbix_metrics_discovery = sorted(zabbix_metrics_discovery, key=lambda x: x[0])