并发性常常被误解为并行性。 并发意味着调度独立代码以系统方式执行。 本章重点介绍使用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)
执行上述程序生成以下输出 -
说明multiprocessing
是一个类似于线程模块的包。 该软件包支持本地和远程并发。 由于这个模块,程序员可以在给定的系统上使用多个进程。