I created simple code which sum the array using Python and multithreading, but I know that It works sequentially. My question is, how can I change my code to not work sequentially using multithreading ? The code for sum:
import threading
matrix = [6,5,4,3,2,1,0]
def sum(n, **totalSum):
sumThreads['sumThreads'] += matrix[n]
sumThreads = {"sumThreads":0}
for i in range(len(matrix)):
t = threading.Thread(target=sum, args=(i,), kwargs=sumThreads)
t.start()
t.join()
print("Suma: ",sumThreads['sumThreads'])
The code for finding minimum:
import threading
matrix = [6,5,4,3,2,1,0]
def min(n, **total):
if matrix[n-1] <= matrix[n]:
if (matrix[n] < minThreads['minThreads']):
minThreads['minThreads'] = matrix[n]
else:
if (matrix[n] < minThreads['minThreads']):
minThreads['minThreads'] = matrix[n]
minThreads = {"minThreads": matrix[1]}
for i in range(len(matrix)):
t = threading.Thread(target=min, args=(i,), kwargs=minThreads)
t.start()
t.join()
print("Minimum: ",minThreads['minThreads'])
I tried to achive it using multiprocessing like so:
if __name__ == '__main__':
import multiprocessing
my_input = [6,5,4,3,2,1,0]
# Pool over all CPUs
print(sum(multiprocessing.Pool().map(int, my_input)))
print(min(multiprocessing.Pool().map(int, my_input)))
but I need to use multithreading. Any help would be greatly appreciated!