一 multiprocessing模块介绍

python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进程。

Python提供了multiprocessing。 multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。

multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,>提供了Process、Queue、Pipe、Lock等组件。

需要再次强调的一点是:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。

三 Process类的使用

创建并开启子进程的方式一

Process 传字典 或者args 传参数也可以

start()开启子进程

from multiprocessing import Process

import time

def task(name):

print("%s is running" % name)

time.sleep(3)

print("%s is done" % name)

if __name__ == "__main__":

# 实例化

# args 为函数传参数

t = Process(target=task, args=("子进程1",))

# 开启子进程

t.start() # 仅仅只是给操作系统发送一个信号 与平常print没有什么区别

print("主")

'''

子进程1 is running

子进程1 is done

'''

'''

看得出是先打印主 再开启子进程1的

'''

用关键字参数kwargs传参

from multiprocessing import Process

import time

def task(name):

print("%s is running" % name)

time.sleep(3)

print("%s is done" % name)

if __name__ == "__main__":

# 实例化

# 也可以用kwargs 为函数传参数 以字典方式

t = Process(target=task, kwargs={'name': '子进程1'})

t.start()

'''

子进程1 is running

子进程1 is done

'''

应用程序是开不了子进程的 p.start() 给操作系统发送信号 至于操作系统什么时候开进程,开多长时间应用程序是控制不了。

p.start() 给操作系统发送信号 告诉操作系统给个开个子进程吧  操作系统收到后 申请内存空间 把父进程的地址空间数据 拷贝给子进程

作为子进程的初始状态

父进程不知道操作系统会

默认是先 开启主进程执行,主进程执行完,再开启 子进程执行,再到子进程执行结束。

创建并开启子进程的方式二

自己写一个子类去继承他 不用默认的类

方法一定要写run

from multiprocessing import Process

import time

# 自己写一个子类去继承他 不用默认的类

# Process的类传进去

class MyProcess(Process):

# 重写了init方法 父类就被覆盖掉

def __init__(self, name):

# 重用父类 因为父类还有很多有用功能,继承父类

super().__init__()

self.name = name

# 方法一定要写run

def run(self):

print("%s is running" % self.name)

time.sleep(3)

print("%s is done" % self.name)

if __name__ == "__main__":

# 实例化 直接用自己自定义的类开子进程

# args 为函数传参数

p = MyProcess("子进程1")

# 开启子进程

p.start() # 仅仅只是给操作系统发送一个信号 与平常print没有什么区别

# p.start() 本质是调用run方法

print("主")

来源:http://www.icode9.com/content-3-250451.html

python如何关闭multiprocess_python 开启进程两种方法 multiprocessing模块 介绍相关推荐

  1. 打开和关闭mysql服务的两种方法

    方法一:使用cmd命令 首先,打开我们的dos窗口,开始-运行-输入cmd. 如上图所示,输入net start mysql 回车即可启动,输入net stop mysql 回车即可关闭. 方法二:选 ...

  2. Python数据分析:异常值检验的两种方法 -- Z 分数 上下分位点(放入自写库,一行代码快速实现)

    本文已在公众号 " 数据分析与商业实践 " 首发.关注一下~,更多商业数据分析案例源码等你来撩.后台回复 "异常值" ,即可获取本文的案例示范与包含详细注释的源 ...

  3. python hist直方图拟合曲线_详解用Python为直方图绘制拟合曲线的两种方法

    直方图是用于展示数据的分组分布状态的一种图形,用矩形的宽度和高度表示频数分布,通过直方图,用户可以很直观的看出数据分布的形状.中心位置以及数据的离散程度等. 在python中一般采用matplotli ...

  4. python直方图拟合曲线_用Python为直方图绘制拟合曲线的两种方法

    直方图是用于展示数据的分组分布状态的一种图形,用矩形的宽度和高度表示频数分布,通过直方图,用户可以很直观的看出数据分布的形状.中心位置以及数据的离散程度等. 在python中一般采用matplotli ...

  5. Python识别二维码的两种方法(cv2)

    在学习Python处理二维码的过程中,我们看到的大多是"用python生成酷炫二维码"."用Python制作动图二维码"之类的文章.而关于使用Python批量识 ...

  6. Python识别二维码的两种方法

    人生苦短,快学Python!大家好,我是朱小五 最近在搜寻资料时,发现了一则10年前的新闻:二维码将成线上线下关键入口.从今天的移动互联网来看,支付收款码/健康码等等与我们息息相关,二维码确实成为了我 ...

  7. win10彻底关闭windows defender的两种方法

    很多小伙伴的电脑一般都会安装第三方杀毒软件,如360.金山等,不过Win10系统还自带了Windows Defender杀毒软件,在打开一些包含EXE文件夹的时候,Windows Defender会明 ...

  8. Windows 10彻底关闭windows defender的两种方法

    多小伙伴的电脑一般都会安装第三方杀毒软件,如360.金山等,不过Win10系统还自带了Windows Defender杀毒软件,在打开一些包含EXE文件夹的时候,Windows Defender会明显 ...

  9. python杨辉三角形10行_python杨辉三角形两种方法

    1 / \ 1 1 / \ / \ 1 2 1 / \ / \ / \ 1 3 3 1 / \ / \ / \ / \ 1 4 6 4 1 / \ / \ / \ / \ / \ 1 5 10 10 ...

最新文章

  1. ROS中base_link, odom, fixed_frame, target_frame和虚拟大地图map的关系
  2. 一键让二次元老婆微笑,还能把猫脸变成狗脸,这篇CVPR 论文真有趣
  3. CSS3伪类和伪元素的特性和区别
  4. 改变循环执行的状态,循环程序举例
  5. Spark:如何替换sc.parallelize(List(item1,item2)).collect().foreach(row={})为并行?
  6. python哪个方向工资高_【看完这五大Python就业方向,你选择哪个?】- 环球网校
  7. [译] 论 Rust 和 WebAssembly 对源码地址索引的极限优化
  8. Opencv visual studio c++ 环境搭建
  9. WZ132源代码行侠仗义
  10. LayuI固定块关闭
  11. voronoi图编程构造_可视化编程真的有那么糟糕?
  12. python pandas读取txt文件_Pandas 读取txt
  13. git push时,发生missing tree 或者 missing blob问题
  14. 永洪BI到底有多好用?知乎大V用3000字力荐
  15. PC传输图片到Hololens
  16. 程序“媛”公号,越来越少了,这次推荐俩,轻拍!
  17. 分析亚马逊竞争对手Listing的技巧与操作步骤
  18. 图片无法显示时,js实现 暂无图片效果
  19. 如何通过 HTML+CSS+JS 制作焦点轮播图
  20. Selenium小技巧 修改ip+ua 改变窗口大小 手机模式 加载本地缓存

热门文章

  1. g团最多的服务器,魔兽世界怀旧服:田园服务器的G团 打本就像白送装备 最后还分金...
  2. 【CSS3】CSS3文本字体相关属性大全
  3. 注意满足循环终止条件时counter是否仍在+1(记洛谷P1035WA的经历,Java语言描述)
  4. 传统负载均衡助力AIOps优化智能运维
  5. 五、字符与字符串(Char类,Char类的使用,String的基本使用,StringBuilder的使用)...
  6. 解决加载静态文件无法被浏览器缓存问题
  7. 陶哲轩实分析 引理8.2.7 注
  8. rsync软件配置和使用教程
  9. 对动画教程的坐标反转公式求证
  10. 不是计算机专业及其相关专业,对软件编程一窍不通,能学好编程吗?