Skip to content

Instantly share code, notes, and snippets.

@tarunjain07
Created March 27, 2018 06:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tarunjain07/b70720181e0498c6ccab0b6535f2e21b to your computer and use it in GitHub Desktop.
Save tarunjain07/b70720181e0498c6ccab0b6535f2e21b to your computer and use it in GitHub Desktop.
from __future__ import print_function
from threading import Thread
from datetime import datetime
def sum(results, thread_id, SUM_RANGE):
print(thread_id, SUM_RANGE)
sum = i = 0
start = thread_id * SUM_RANGE
while(i < SUM_RANGE):
sum += (i + start)
i += 1
results[thread_id] = sum
def sum_runner(NO_OF_THREADS, SUM_RANGE):
results = [None] * NO_OF_THREADS
threads = [None] * NO_OF_THREADS
startTime = datetime.now()
DIVIDED_SUM_RANGE = (SUM_RANGE / NO_OF_THREADS)
for i in range(len(threads)):
threads[i] = Thread(target=sum, args=(results, i, DIVIDED_SUM_RANGE))
threads[i].start()
for i in range(len(threads)):
threads[i].join()
total_sum = 0
for i in range(len(results)):
total_sum += results[i]
print(results)
print("Time taken to sum numbers = {}".format(datetime.now() - startTime))
print("total_sum = {}".format(total_sum))
SUM_RANGE = 2000000
# ----- Using 1 thread
NO_OF_THREADS = 1
sum_runner(NO_OF_THREADS, SUM_RANGE)
# ouput -
# Time taken to sum numbers = 0:00:29.823206
# total_sum = 4999999950000000
# ------ Using 4 threads
NO_OF_THREADS = 2
sum_runner(NO_OF_THREADS, SUM_RANGE)
# ouput -
# Time taken to sum numbers = 0:00:29.823206
# total_sum = 4999999950000000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment