开发手册 欢迎您!
软件开发者资料库

Python设计模式 - Python中的并发性

Python设计模式Python中的并发 - 从简单和简单的步骤学习Python设计模式从基本到高级概念,包括简介,Python的Gist,模型视图控制器,单例,工厂,构建器,原型,外观,命令,适配器,装饰器代理,责任链,观察员,状态,战略,模板,飞重,抽象工厂,面向对象的模式,面向对象的概念实施,迭代器模式,词典,列表数据结构,集,队列,字符串和序列化,Python中的并发,反模式,异常处理。

并发经常被误解为并行性.并发意味着调度独立代码以系统方式执行.本章重点介绍使用Python执行操作系统的并发性.

以下程序有助于执行操作系统的并发性 :

import osimport timeimport threadingimport multiprocessingNUM_WORKERS = 4def 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 += 1for _ in range(NUM_WORKERS):   only_sleep()end_time = time.time()print("Serial time=", end_time - start_time)# Run tasks using threadsstart_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 processesstart_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)

输出

以上程序生成以下输出 :

Concurrency

说明

"multiprocessing"是一个类似于线程模块的包.该包支持本地和远程并发.由于这个模块,程序员可以在给定系统上使用多个进程.