Question: USE PYTHON MULTI THREADING TO COMPLETE DO NOT USE PROCESSES ONLY COMPLETE PART 2 using MULTI THREADING 1) Basic version with two levels of threads

USE PYTHON MULTI THREADING TO COMPLETE DO NOT USE PROCESSES

ONLY COMPLETE PART 2 using MULTI THREADING

1) Basic version with two levels of threads (master and slaves)

One master thread aggregates and sums the result of n slave-threads where each slavethread sums a different range of values in an array of 1000 random integers (please program to generate 1000 random integers to populate the array).

************ONLY COMPLETE THIS PART BELOW***************

2) Advanced version with more than two levels of threads The master thread creates two slave-threads where each slave-thread is responsible to sum half segment of the array.

Each slave thread will fork/spawn two new slave-threads where each new slave-thread sums half of the array segment received by its parent. Each slave thread will return the subtotal to its parent thread and the parent thread aggregates and returns the total to its parent thread. Start with 7 nodes thread tree, when you are comfortable, you can extend it to a full thread tree.

USE THE CODE BELOW TO ASSIST WITH ADVANCED VERSION

import random import threading

def sum_array(arr, start, end, result): total = 0 for i in range(start, end): total += arr[i] result.append(total)

def parallel_sum(arr, num_threads): n = len(arr) chunk_size = n // num_threads threads = [] result = []

for i in range(num_threads): start = i * chunk_size end = start + chunk_size if i == num_threads - 1: end = n thread = threading.Thread(target=sum_array, args=(arr, start, end, result)) threads.append(thread) thread.start()

for thread in threads: thread.join()

return sum(result)

# Generate 1000 random integers arr = [random.randint(0, 1000) for _ in range(1000)]

# Test parallel_sum function with 4 threads print(parallel_sum(arr, 4))

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!