Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.92 KB | None | 0 0
  1. from concurrent.futures import ThreadPoolExecutor
  2.  
  3. def test(paramlist, startIndex, stopIndex):
  4.     sum = 0
  5.     for i in range(startIndex, stopIndex):
  6.         sum += paramlist[i]
  7.     return sum
  8.  
  9.  
  10. def splitproblem(total, workers):
  11.     add = total // workers;
  12.     remain = total % workers;
  13.  
  14.     curIndex = 0
  15.  
  16.     ret = []
  17.  
  18.     for i in range(0, workers):
  19.         ret.append(curIndex)
  20.  
  21.         curIndex += add
  22.  
  23.         if(remain > 0):
  24.             remain -= 1
  25.             curIndex += 1;
  26.  
  27.     ret.append(total)
  28.  
  29.     return ret
  30.  
  31. if __name__ == "__main__":
  32.     testlist = range(0, 10000)
  33.     num_threads = 12
  34.  
  35.     list_size = len(testlist)
  36.  
  37.     indices = splitproblem(list_size, num_threads)
  38.  
  39.     with ThreadPoolExecutor(max_workers=num_threads) as executor:
  40.         futures = []
  41.         for idx in range(0, num_threads):
  42.             futures.append(executor.submit(test, testlist, indices[idx], indices[idx+1]))
  43.        
  44.         sum = 0
  45.  
  46.         for future in futures:
  47.             result = future.result()
  48.             sum += result
  49.  
  50.         print(sum)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement