Global_set, Global_set_supp = polling.gen_global_set(temp, size-1, NORM, SUP, local_pruning) '''homesite''' '''get global sets from all polling sites''' temp = comm.gather(Global_set, 0) temp_supp = comm.gather(Global_set_supp, 0) site = comm.gather(large_site, 0) if rank == 0: print 'HOME SITE: get Global_large and large_site from POLLING SITES ' + ', STEP ' + str(k) temp = temp[1:] temp_supp = temp_supp[1:] site = site[1:] if k == 1: large_supp = {} '''generate large set''' large, large_supp = home.compute_large(temp, temp_supp, site, size - 1, CONF, large, large_supp) large_length = len(large) '''divide large into global_large''' Global_large = home.divide_global_set(size - 1, large) '''send global_large to remote sites''' for remoteJ in range(1,size): if flag[remoteJ] == 0: '''send global_large to remote site''' if remoteJ in Global_large.keys(): comm.send(Global_large[remoteJ], remoteJ, 3*k) else: comm.send('NO GLOBAL_LARGE', remoteJ, 3*k) print 'STEP ' + str(k) + ' done, start STEP ' +str(k+1) del temp '''new loop''' k += 1
"""update large_site""" [local_pruning, large_site[rank]] = polling.insert(tranAndSup, remoteJ, local_pruning, large_site[rank]) """gather support values, in Transacion""" """generate global large sets""" result = polling.gen_global_set(Transaction, size, NORM, SUP, local_pruning) Global_set[rank] = result[0] print Global_set[rank] Global_set_supp[rank] = result[1] print Global_set_supp[rank] """homesite""" """get global sets from all polling sites, in Global_set""" """generate large set""" large = {} large_supp = {} large, large_supp = home.compute_large(Global_set, Global_set_supp, large_site, size, large, large_supp) if len(large) == 0: # no transactions added (global_large) print "BREAK IN STEP " + str(k) + " global_set no update" break """divide large into global_large""" Global_large = home.divide_global_set(size, large) """send global_large to remote sites""" del temp k += 1 """receive global_large from home site, start next loop""" for rank in range(size): if breakFlag[rank] == 0: REMOTE[rank].global_large = Global_large[rank] else: print breakFlag[rank]