1 基本理解

  python不支持真多线程,无法在单进程中调用多核cpu。对于cpu密集型任务,可以使用多进程。python会调用OS原生多进程,运行在多核上,以此提高运行速度。

2 基本实现

import  multiprocessing
import time def test(n):
print('this is the num %s process' %n)
time.sleep(100) if __name__ == '__main__':
for i in range(10):
mp = multiprocessing.Process(target=test,args=(i,))
mp.start()
#mp.join()
#和threading模块使用方式基本一致
#调用10个进程,系统就会同步运行10个进程
#如果在主循环中使用join方法,就会等待子进程运行结束后再往下走。

  

3 父子进程间关系

import  multiprocessing
import time,os def test(n):
print('this is the num %s process,pid is %s parent pid is %s' %(n,os.getpid(),os.getppid()))
time.sleep(100) if __name__ == '__main__':
print('the pid is %s, the parent pid is %s' %(os.getpid(),os.getppid()))
for i in range(10):
mp = multiprocessing.Process(target=test,args=(i,))
mp.start()

  

[root@yhzk01 scripts]# python3 mp.py
the pid is 128430, the parent pid is 102584
this is the num 0 process,pid is 128431 parent pid is 128430
this is the num 1 process,pid is 128432 parent pid is 128430
this is the num 2 process,pid is 128433 parent pid is 128430
this is the num 8 process,pid is 128439 parent pid is 128430
this is the num 5 process,pid is 128436 parent pid is 128430
this is the num 6 process,pid is 128437 parent pid is 128430
this is the num 3 process,pid is 128434 parent pid is 128430
this is the num 7 process,pid is 128438 parent pid is 128430
this is the num 4 process,pid is 128435 parent pid is 128430
this is the num 9 process,pid is 128440 parent pid is 128430 [root@yhzk01 ~]# ps aux |grep mp.py
root 128430 0.2 0.8 141552 8148 pts/0 S+ 15:26 0:00 python3 mp.py
root 128431 0.0 0.6 141552 6416 pts/0 S+ 15:26 0:00 python3 mp.py
root 128432 0.0 0.6 141552 6412 pts/0 S+ 15:26 0:00 python3 mp.py
root 128433 0.0 0.6 141552 6412 pts/0 S+ 15:26 0:00 python3 mp.py
root 128434 0.0 0.6 141552 6412 pts/0 S+ 15:26 0:00 python3 mp.py
root 128435 0.0 0.6 141552 6416 pts/0 S+ 15:26 0:00 python3 mp.py
root 128436 0.0 0.6 141552 6416 pts/0 S+ 15:26 0:00 python3 mp.py
root 128437 0.0 0.6 141552 6420 pts/0 S+ 15:26 0:00 python3 mp.py
root 128438 0.0 0.6 141552 6420 pts/0 S+ 15:26 0:00 python3 mp.py
root 128439 0.0 0.6 141552 6420 pts/0 S+ 15:26 0:00 python3 mp.py
root 128440 0.0 0.6 141552 6420 pts/0 S+ 15:26 0:00 python3 mp.py
root 128444 0.0 0.0 112660 984 pts/1 S+ 15:26 0:00 grep --color=auto mp.py [root@yhzk01 ~]# ps aux |grep 102584
root 102584 0.0 0.2 116308 2640 pts/0 Ss May30 0:00 -bash
root 128442 0.0 0.0 112660 976 pts/1 R+ 15:26 0:00 grep --color=auto 102584 #可见,bash进程启动子进程mp.py。mp.py再启动多个子进程。

  

4 class Queue()

  线程共享内存数据,进程的内存是独立的。

  在queue模块中,有class Queue,但这个队列只是在线程间通信的。

  在mulitprocessing模块中,也有class Queue,可以提供父进程与子进程或者子进程之间的数据交互。

multiprocessing多进程模块的更多相关文章

  1. python笔记9 线程进程 threading多线程模块 GIL锁 multiprocessing多进程模块 同步锁Lock 队列queue IO模型

    线程与进程 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要 ...

  2. python学习笔记——multiprocessing 多进程模块Process

    系统自带的fork模块创建的多进程是基于Linux或Unix平台的,而window平台并不支持: python中的multiprocess为跨平台版本的多进程模块,支持子进程.通信和共享数据.执行不同 ...

  3. python multiprocessing多进程模块

    原文:https://blog.csdn.net/CityzenOldwang/article/details/78584175 多进程 Multiprocessing 模块 multiprocess ...

  4. Python之路(第四十六篇)多种方法实现python线程池(threadpool模块\multiprocessing.dummy模块\concurrent.futures模块)

    一.线程池 很久(python2.6)之前python没有官方的线程池模块,只有第三方的threadpool模块, 之后再python2.6加入了multiprocessing.dummy 作为可以使 ...

  5. 进程池 和 multiprocessing.Pool模块

    进程池的概念 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务.那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁 ...

  6. 并发、并行、同步、异步、全局解释锁GIL、同步锁Lock、死锁、递归锁、同步对象/条件、信号量、队列、生产者消费者、多进程模块、进程的调用、Process类、

    并发:是指系统具有处理多个任务/动作的能力. 并行:是指系统具有同时处理多个任务/动作的能力. 并行是并发的子集. 同步:当进程执行到一个IO(等待外部数据)的时候. 异步:当进程执行到一个IO不等到 ...

  7. 关于Nodejs的多进程模块Cluster

    关于Nodejs的多进程模块Cluster   前述 我们都知道nodejs最大的特点就是单进程.无阻塞运行,并且是异步事件驱动的.Nodejs的这些特性能够很好的解决一些问题,例如在服务器开发中,并 ...

  8. Python并发复习3 - 多进程模块 multiprocessing

    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiprocessing,只需要定 ...

  9. 多进程模块 multiprocessing

    由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程. multiprocessing包是Python中的多进程 ...

随机推荐

  1. Javascript对象的技巧和陷阱

    创建对象的3种方法 方法1 直接创建 var obj = { name: "mike", age: 10 } 方法2 用new创建 var ob = new Date(); 方法3 ...

  2. python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法

    一.匿名函数 匿名函数的结构:变量   =  lamda  参数: 返回值 a  =  lamda  x : x*x       # x为参数,   : 后边的为函数体 print(a(x)) def ...

  3. 责任链模式-Chain of Responsibility

    责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 责任链模式结构图: 代码实现: 责任链模式 ...

  4. matlab max函数

    >> a=[1,6,3;7,5,6] a = 1 6 3 7 5 6 >> [q,p]=max(a,[],2) 返回每行最大值,q是结果.p是索引 q = 6 7 p = 2 ...

  5. 细说align 的作用及用法

    .align 就是用来对齐的,究竟怎么对齐,有啥情况?下面分析一下 基本情况讲解 (一) $vim align1.s 在新建的文件编辑以下代码: 1 2 3 4 5 6 _start: b reset ...

  6. HDU2594 Simpsons’ Hidden Talents —— KMP next数组

    题目链接:https://vjudge.net/problem/HDU-2594 Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Oth ...

  7. 类、对象(java基础知识六)

    1.Java约定俗成 java约定俗成 1,类名接口名 一个单词首字母大写,多个单词每个单词首字母都大写 2,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用 ...

  8. Android Studio四大组件之Service

    Service在Android运行在后台,它没有可视化界面,只是默默运行在后台.我们以一个后台定时器的例子清晰的说明Service的运行流程. 一.创建Service类 项目右键->New-&g ...

  9. 关于return

    return ;  相当于执行完跳转url后停止,return无返回值仅作停止作用,是指停止当前方法,是方法的终点 return null ;  代表引用类型的空值

  10. 初学者遇到的PostgreSQL字符集问题的解决

    当初学者在使用PostgreSQL数据库,输入中文时,会遇到“ERROR:  invalid byte sequence for encoding "UTF8": 0xd6d0”的 ...