![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python多进程
大帅不是我
你的坚持,终将美好。
展开
-
Python多进程和多线程的使用场景
Python多进程适用的场景:计算密集型(CPU密集型)任务Python多线程适用的场景:IO密集型任务计算密集型任务一般指需要做大量的逻辑运算,比如上亿次的加减乘除,使用多核CPU可以并发提高计算性能。IO密集型任务一般指输入输出型,比如文件的读取,或者网络的请求,这类场景一般会遇到IO阻塞,使用多核CPU来执行并不会有太高的性能提升。下面使用一台64核的虚拟机来执行任务,通过示例代码来区别它们,示例1:执行计算密集型任务,进行1亿次运算使用多进程from multiproc原创 2021-03-03 16:41:02 · 1522 阅读 · 3 评论 -
Python多进程之Process、Pool、Lock、Queue、Event、Semaphore、Pipe
1. Python创建进程类Processpython的multiprocessing模块提供了一个创建进程的类Precess,其创建有以下两种方法:创建Process类的实例,并指向目标函数和传递参数 自定义一个类并继承Process类,重写__init__()和run()方法Process类的构造函数如下:class multiprocessing.Process(group, target, name, kwargs) def __init__(self,原创 2021-03-01 20:24:54 · 1362 阅读 · 3 评论 -
Python多进程之数据交换Pipe
multiprocessing.Pipe()方法会返回一个管道(列表的形式)的两个端口,一个端口作为输入端,一个端口作为输出端,如进程A的输出可以作为进程B的输入,进程B的输出可以作为进程A的输入,默认是全双工模式。Pipe()方法返回的对象具有发送消息send()方法和接收消息recv()方法。调用接收recv()方法时,如果管道中没用消息会一直阻塞,如果管道关闭,则会抛出EOFError异常。示例:import multiprocessingimport timedef task1原创 2021-03-01 17:32:26 · 1201 阅读 · 1 评论 -
Python多进程之进程池Pool
进程池Pool可以提供指定数量的进程给用户使用,当有新的请求进程时,若Pool池没有满,就会创建一个新的进程用于执行该请求,如果Pool池中的进程数量已经达到最大值,则请求会等待,直到池中有进程结束才会创建新的进程。示例:# coding: utf-8import multiprocessingimport timedef task(name): print(f"{time.strftime('%H:%M:%S')}: {name} 开始执行") time.sleep(3原创 2021-02-27 19:45:02 · 457 阅读 · 0 评论 -
Python多进程队列Queue
Queue是python多进程的安全队列,可以使用Queue实现多进程之间的数据传递。示例:from multiprocessing import Process, Queueimport timedef ProducerA(q): count = 1 while True: q.put(f"冷饮 {count}") print(f"{time.strftime('%H:%M:%S')} A 放入:[冷饮 {count}]")原创 2021-02-27 19:25:05 · 5480 阅读 · 0 评论 -
Python多进程同步机制Event
Event用来实现多进程之间的同步通信示例:import multiprocessingimport timedef wait_for_event(e): e.wait() time.sleep(1) # 唤醒后清除Event状态,为后续继续等待 e.clear() print(f"{time.strftime('%H:%M:%S')} 进程 A: 我们是兄弟,我等你...") e.wait() print(f"{time.strft原创 2021-02-25 20:32:22 · 584 阅读 · 0 评论 -
Python多进程同步机制之Lock锁
多进程的目的是并发执行程序,提高程序执行效率,但有时候我们想要在某一时间,或者满足某一条件时,只有一个进程在执行,就需要使用Lock锁机制。示例:import multiprocessingimport timedef task1(lock): with lock: # with上下文语句使用锁,会自动释放锁 n = 5 while n > 1: print(f"{time.strftime('%H:%M:%S')}原创 2021-02-25 20:21:02 · 1365 阅读 · 0 评论 -
Python多进程并发控制之Semaphore
Semaphore是用来控制对共享资源的访问量,可以控制同一时刻进程的并发数量。示例:import multiprocessingimport timedef worker(s, i): s.acquire() # 获得锁 print(time.strftime('%H:%M:%S'), multiprocessing.current_process().name + " 获得锁运行"); time.sleep(i) print(time.strftime原创 2021-02-25 20:10:16 · 670 阅读 · 0 评论 -
Python创建进程类Process
1. Python创建进程类Processpython的multiprocessing模块提供了一个创建进程的类Precess,其创建有以下两种方法:创建Process类的实例,并指向目标函数和传递参数 自定义一个类并继承Process类,重写__init__()和run()方法Process类的构造函数如下:class multiprocessing.Process(group, target, name, kwargs) def __init__(self,原创 2021-02-24 17:37:45 · 1031 阅读 · 0 评论