Created
March 27, 2018 06:05
-
-
Save tarunjain07/b70720181e0498c6ccab0b6535f2e21b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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