p = Process(target=control_thread, args=( child_conn, c_name, thread_cnt, N, i, )) p.start() process_list.append((p, parent_conn)) one_count_list = [0] * nodes_cnt zero_count_list = [0] * nodes_cnt sen_count_list = [0] * nodes_cnt for p, conn in process_list: tup = conn.recv() for i in range(len(tup[0])): one_count_list[i] += tup[0][i] zero_count_list[i] += tup[1][i] sen_count_list[i] += tup[2][i] p.join() for i in range(len(circuit.nodes_lev)): circuit.nodes_lev[i].one_control = one_count_list[i] / total_pattern circuit.nodes_lev[i].zero_control = zero_count_list[i] / total_pattern circuit.nodes_lev[i].sen_p = sen_count_list[i] / total_pattern # print (circuit.nodes_lev[i].one_control, circuit.nodes_lev[i].zero_control,circuit.nodes_lev[i].sen_p) circuit.STAFAN_observability() end_time = time.time() duration = end_time - start_time print("Thread count : {}, Time taken: {}".format(thread_cnt, duration))