Параллелизм часто неправильно понимают как параллелизм. Параллельность подразумевает планирование независимого кода для его систематического выполнения. Эта глава посвящена выполнению параллелизма для операционной системы, использующей Python.
Следующая программа помогает в выполнении параллелизма для операционной системы —
import os import time import threading import multiprocessing NUM_WORKERS = 4 def only_sleep(): print("PID: %s, Process Name: %s, Thread Name: %s" % ( os.getpid(), multiprocessing.current_process().name, threading.current_thread().name) ) time.sleep(1) def crunch_numbers(): print("PID: %s, Process Name: %s, Thread Name: %s" % ( os.getpid(), multiprocessing.current_process().name, threading.current_thread().name) ) x = 0 while x < 10000000: x += 1 for _ in range(NUM_WORKERS): only_sleep() end_time = time.time() print("Serial time=", end_time - start_time) # Run tasks using threads start_time = time.time() threads = [threading.Thread(target=only_sleep) for _ in range(NUM_WORKERS)] [thread.start() for thread in threads] [thread.join() for thread in threads] end_time = time.time() print("Threads time=", end_time - start_time) # Run tasks using processes start_time = time.time() processes = [multiprocessing.Process(target=only_sleep()) for _ in range(NUM_WORKERS)] [process.start() for process in processes] [process.join() for process in processes] end_time = time.time() print("Parallel time=", end_time - start_time)
Выход
Вышеуказанная программа генерирует следующий вывод —
объяснение
«Многопроцессорная обработка» — это пакет, похожий на модуль потоков. Этот пакет поддерживает локальный и удаленный параллелизм. Благодаря этому модулю программисты получают преимущество использования нескольких процессов в данной системе.