temp = comm.recv(source = remoteJ, tag = 3*k - 2) print 'POLLING SITE ' + str(rank) + ': receive local_large from REMOTE SITES' + ', STEP ' + str(k) for tranAndSup in temp: '''update large_site''' [local_pruning, large_site] = polling.insert(tranAndSup, remoteJ,local_pruning, large_site) '''gather support values''' temp = comm.gather(Transaction, 0) if rank == 0: for pollingJ in range(1,size): comm.send(temp[1:], pollingJ, 3*k-1) if rank != 0: '''generate global large sets''' temp = comm.recv(source = 0, tag = 3*k-1) 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)
Global_set = [[]] * size Global_set_supp = Global_set large_site = {} # large_site[rank] = {transaction:[site1,site2,...],...} for rank in range(size): """receive local_large sets from all remote sites""" local_pruning = [] # Local_Pruning[rank] = [transaction1,transaction2,...] large_site[rank] = {} # large_site[rank] = {transaction:[site1,site2,...],...} for remoteJ in range(size): """receive LL(i,j)(k) to rank j site""" temp = local_large[remoteJ][rank] for tranAndSup in temp: """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