Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Challenge: The Parallel Square Collector | Multithreading vs. Multiprocessing
Python Structural Programming
Sectie 3. Hoofdstuk 5
single

single

Challenge: The Parallel Square Collector

Veeg om het menu te tonen

Multiprocessing in Python allows you to run multiple processes in parallel, each with its own Python interpreter and memory space. This approach is especially useful for CPU-bound tasks, where you want to leverage multiple CPU cores to perform computations faster. By using multiprocessing, you can significantly improve performance for operations that require heavy computation, such as data processing, scientific calculations, or simulations.

Note
Note

The multiprocessing.Manager class provides a way to create shared objects - such as lists and dictionaries - that can be safely accessed and modified by multiple processes. When you need to collect results or coordinate data between separate Process instances, always use a Manager to create these shared objects. Regular Python lists and dictionaries are not shared between processes, so changes made in one process will not be visible to others. With a Manager list, each process can append or modify data, and all changes will be visible to every process using that shared object.

123456789101112131415161718192021
from multiprocessing import Process, Manager def add_value(value, shared_list): shared_list.append(value) if __name__ == "__main__": manager = Manager() shared_list = manager.list() processes = [] values = [10, 20, 30, 40, 50] for v in values: p = Process(target=add_value, args=(v, shared_list)) processes.append(p) p.start() for p in processes: p.join() print("Collected results:", list(shared_list))

This code demonstrates how to use multiprocessing.Manager to create a shared list that multiple processes can access and modify. Each process computes the square of a number and appends its result to the shared list. By using a Manager list, you ensure that all processes can safely share and collect data, making it possible to gather results from separate processes running in parallel.

Taak

Veeg om te beginnen met coderen

Write a function called compute_square that takes a single integer and a results list as arguments, computes the square of the integer, and appends the result to the results list.

Then, using the multiprocessing.Process class, create a separate process for each number in the numbers list to compute its square in parallel. Collect the results from all processes and store them in the results variable.

  • Implement the compute_square function to take two arguments: the integer to square and the results list.
  • In compute_square, compute the square of the integer and append it to the results list.
  • For each number in numbers, create a Process targeting compute_square with the number and results as arguments.
  • Start all processes, then join them to ensure all computations complete before checking the results.
  • Store all computed squares in the results list.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 5
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt