总结python多进程multiprocessing的相关知识
作者:xrj1111 发布时间:2022-12-04 00:17:57
标签:python,multiprocessing,多进程
multiprocessing多进程
概念
创建多进程基本流程
创建进程对象
启动进程 回收进程
代码:
import multiprocessing as mp
from time import sleep
# 进程执行函数
def fun():
print("开始一个进程")
sleep(3)
print("进程结束")
# 创建进程对象
p = mp.Process(target = fun)
p.start() # 启动进程
p.join() # 回收进程
运行结果:
开始一个进程
进程结束
Process finished with exit code 0
1 、父子进程是并行执行的 子进程执行函数 父进程执行除子进程外内容:
import multiprocessing as mp
from time import sleep
# 进程执行函数
def fun():
print("开始一个进程")
sleep(3)
print("进程结束")
# 创建进程对象
p = mp.Process(target = fun) # 把fun函数作为独立子进程 其它函数由进程来执行
p.start() # 启动进程
sleep(2)
print("父进程执行内容")
p.join() # 回收进程
print("===============")
"""
pid = os.fork
if pid == 0
fun()
os._exit(0)
else:
os.wait()
"""
运行结果:
开始一个进程
父进程执行内容
进程结束
===============
2、子进程不能改变父进程中变量的值
代码:
import multiprocessing as mp
from time import sleep
a = 1
# 进程执行函数
def fun():
print("开始一个进程")
sleep(3)
global a
print("a=", a)
a = 1000
print("a=", a)
print("进程结束")
# 创建进程对象
p = mp.Process(target = fun) # 把fun函数作为独立子进程 其它函数由进程来执行
p.start() # 启动进程
sleep(2)
print("父进程执行内容")
p.join() # 回收进程
print("===============")
print("a=", a)
运行结果:
开始一个进程
父进程执行内容
a= 1
a= 1000
进程结束
a= 1
创建多个进程
代码:
"""
创建多个进程
"""
from multiprocessing import Process
import os
from time import sleep
def fun1():
sleep(2)
print(os.getppid(), '--', os.getpid(), "吃饭")
def fun2():
sleep(3)
print(os.getppid(), '--', os.getpid(), "睡觉")
def fun3():
sleep(4)
print(os.getppid(), '--', os.getpid(), "学习")
jobs =[]
for th in [fun1, fun2, fun3]:
p = Process(target = th)
jobs.append(p)
p.start()
for i in jobs:
i.join()
运行结果:
46013 – 46022 吃饭
46013 – 46023 睡觉
46013 – 46024 学习
含有参数的进程函数
代码:
from multiprocessing import Process
from time import sleep
# 含有参数的进程函数
def worker(sec, name):
for i in range(3):
sleep(sec)
print("I'm %s"%name)
print("I'm working...")
# p = Process(target = worker, args = (2, "Tom"))
p = Process(target = worker, kwargs = {'name':'tom', 'sec': 2})
p.start()
p.join()
运行结果:
I'm tom
I'm working…
I'm tom
I'm working…
I'm tom
I'm working…
案例练习
代码:
from multiprocessing import Process
import os
filename = './dace.jpg'
size = os.path.getsize(filename)
# 复制上半部分
def up():
fr = open(filename, 'rb')
fw = open('bot,jpg', 'wb')
n = size//2
fw.write(fr.read(n))
fw.close()
fr.close()
# 复制下半部分
def down():
fr = open(filename, 'rb')
fw = open('bot,jpg', 'wb')
fr.seek(size//2.0)
fw.write(fr.read())
fw.close()
fr.close()
p = Process(target = up)
q = Process(target = down)
p.start()
q.start()
p.join()
q.join()
来源:https://blog.csdn.net/weixin_55643605/article/details/117908473


猜你喜欢
- 错误截图如下:类似报错的原因1.imread()中的路径参数有误a.相对路径:此项目文件夹下可写成imread(“1.jpg”);b.绝对路
- 绘制图形利用opencv提供的绘制图形api可以轻松在图像上绘制各种图形,比如直线,矩形,圆,椭圆等图形。line(img,pt
- asp之家注:为什么要防止访客频繁刷新页面呢?也许你会说他想刷新就让他刷新吧,没什么关系,而且还增加了网页的PV,呵呵。但是有的页面我们可能
- 一、DSE算法背景介绍1. DES的采用1979年,美国银行协会批准使用1980年,美国国家标准局(ANSI)赞同DES作为私人使用的标准,
- PHP sessionphp session 反序列化漏洞存在的原因:当序列化session和读取反序列化字符时采用的序列化选择器不一样时,
- css: .main { height:360px; width:290px; border:1px solid #444444; font
- AES(英文:Advanced Encryption Standard,中文:高级加密标准),是一种区块加密标准。AES将原始数
- 用HZHOST实用工具集的服务器安全设置里安装了MSSQL安全配置,现在SQL2000还原不了数据库了,从还原选定设备浏览文件夹时出现&qu
- imadjustimadjust是一个计算机函数,该函数用于调节灰度图像的亮度或彩色图像的颜色矩阵。在matlab的命令窗口中键入: doc
- Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形
- 本文为大家分享了python实现俄罗斯方块游戏,继上一篇的改进版,供大家参考,具体内容如下1.加了方块预览部分2.加了开始按钮在公司实习抽空
- 这篇文章主要介绍了python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例,文中通过示例代码介绍的非常详细,对大家的
- 废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题
- map()是python的一个内建函数, 他能够通过函数来处理序列,比如,我们相关一个数组[0,1,2,3,4,5]所有的数字都+2 , 当
- 今天学习Python的时候,需要安装一个第三方库,Python Imaging Library,是Python下面一个非常强大的处理图像的工
- 这是官方截图,mysql5.7安装后,会有一个默认密码,保存在mysql.log里面,找的他,并更改官方文档地址https://dev.my
- 系统只要能从数据库连接池获取到一个数据库连接,就能执行CRUD。可通过数据库连接将待执行SQL发给MySQL。大部分 crud boy只知道
- 简介Part1:写在最前 OneProxy平民软件完全自主开发的分布式数据访问层,帮助用户在MySQL/
- 误区 #7:一个数据库可以存在多个镜像 错误 这个误区就有点老生常谈了。每一个主体服务器只允许一个镜像服务器。如果你希望存在多个主体服务器的
- 找了 很多 关于表格分页 点击事件 请求, table.render 并不支持监听点击事件,所以我就把 table.render 和 lay