Python 并发

  • 简述

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