python 多进程 提高运行效率
python 是一种非常流行的编程语言,但是python 的效率却并不是非常的理想,这时候就非常有必要使用多进程来提高python 的运行效率。
导入多进程的模块
from multiprocessing import Process # 多进程模块
from multiprocessing import current_process # 获取当前进程号
import time
创建多个进程
方式一:
# 定义一个多进程运行的函数
def fun(n):time.sleep(3) # 设置一个延时观察多进程的运行情况print("{}".format(n))print("当前进程号:",current_process().pid) # 打印当前的进程号if __name__ = "__main__":p = Process(target=fun,args=(3,)) # 输入的参数设置,如果只是一个参数时候必须加上逗号,不然会被解析为一个字符串或者数字p.start() # 创建一个进程的内存空间p.join() # 阻塞进程,等待子进程运行完成之后,再继续运行朱金城代码print("主进程运行结束,进程号{}".format(current_process().pid)) # 查看主进程号
方式二:
创建多个进程
class myProcess(Process): # 继承多进程的模块def run(self): # 替换多进程类中的run 函数print("start myProcess")time.sleep(2)print("end myProcess")if __name__ = "__main__":p = myProcess() # 创建一个子进程p.start()p.join() # 阻塞子进程等待子进程运行结束print("主进程运行结束")
ps: 查看当前进程号的另一种方法
import os
os.getpid(); # 当前进程的进程号
os.getppid(); # 当前进程的父进程的进程号
进程之间数据一般不能相互交互,需要相互交互时候,需要使用到第三方介质或者导入其他第三方库进行获取。
总结:
1.多个进程在内存中分别拥有着不同的区域,进程之间互不影响,同时也导致是数据不能共享。
2.多个进程分配到内存之后,几乎同时运行,不需要等待前面的结束才进行后面的进程,异步执行代码。
3、多进程由于同时运行,导致在读取数据以及修改数据时候会出现问题,添加互斥锁,使得一个时间点内只能有一个进程在修改数据,不会导致数据出现逻辑上的错误(将并发数据转变成为串行,牺牲效率,但是保证数据的安全)
from multiprocessing import Process, Lock
import jsondef change(i):with open("data.json","w") as f:json.dump(f,) # 修改逻辑数据def run(i,mutex):mutex.acquire() # 抢锁change(i)mutex.release() # 释放锁 mutex = Lock() # 新建一把互斥锁
for i in range(1,10):p = Process(target=run,args=(i,mutex))p.start()
python 多进程 提高运行效率相关推荐
- python提高运行效率_提高 Python 运行效率的六个窍门
窍门一:关键代码使用外部功能包 Python简化了许多编程任务,但是对于一些时间敏感的任务,它的表现经常不尽人意.使用C/C++或机器语言的外部功能包处理时间敏感任务,可以有效提高应用的运行效率.这些 ...
- 将python代码转化为c语言代码,提高运行效率
将python代码转化为c语言代码,提高运行效率 首先,需要安装cpython库: pip install cython 安装完成之后,写一段简单的代码,例如下面这个利用递归求斐波那契数列的函数,然后 ...
- python多进程存储数据_Python 多进程及进程间通信
python 因 GIL 的存在,处理计算密集型的任务时无法高效利用多核 CPU 的计算资源,这时就需要使用多进程来提高对 CPU 的资源利用.Python 多进程主要用 multiprocessin ...
- python多进程和多线程使用场景_Python36 多线程、多进程的使用场景
多线程与多进程的使用场景 io 操作不占用CPU(从硬盘.从网络.从内存读数据都算io) 计算占用CPU(如1+1计算) python中的线程是假线程,不同线程之间的切换是需要耗费资源的,因为需要存储 ...
- Python 多进程开发与多线程开发
我们先来了解什么是进程? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程 ...
- python多进程断点续传分片下载器
python多进程断点续传分片下载器 标签:python 下载器 多进程 因为爬虫要用到下载器,但是直接用urllib下载很慢,所以找了很久终于找到一个让我欣喜的下载器.他能够断点续传分片下载,极大提 ...
- 一文看懂Python多进程与多线程编程(工作学习面试必读)
进程(process)和线程(thread)是非常抽象的概念, 也是程序员必需掌握的核心知识.多进程和多线程编程对于代码的并发执行,提升代码效率和缩短运行时间至关重要.小编我今天就来尝试下用一文总结下 ...
- Python 多进程向同一个文件写数据
1.遇到的问题: 之前,因为考虑到Python多进程可以充分利用CPU核数,提高程序的效率,所以就使用多进程写文件.但是向同一个文件写入数据的时候,由于多进程是并发进行,操作系统中会不清楚到底要写入哪 ...
- Python 多进程 multiprocessing 使用示例
参考:http://blog.csdn.net/qdx411324962/article/details/46810421 参考:http://www.lxway.com/4488626156.htm ...
最新文章
- python字典键操作
- Https协议/SSL协议
- postman请求soap 请求_postman中请求如何传递对象到spring controller?
- vue点击按钮切换显示不同内容_邂逅Vue
- 20 岁发表 SCI 的学霸,梦想用算法改变世界
- configuration id is generated based on page guid
- db2 最大分区数_db2 查询表分区数据库
- es6 __proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
- GaussDB(for MySQL)如何快速创建索引?华为云数据库资深架构师为您揭秘
- Spring MVC起步(一)
- PWM波、方波的输出与捕获
- 制作mac系统引导盘
- win7磁盘管理分区,改变页面文件卷,删除卷就由灰变黑了!
- CentOS 7 安装rar解压rar
- java输入月份获得该年的这个月最后一个工作日是多少号(星期一到星期五)
- 解读全球十大公司物联网战略,一个万物智能的世界即将到来
- 《数字图像处理 MATLAB版》学习笔记
- 中型B2C电商行业BI系统推荐?
- 闭关修炼(二十五)基础web安全
- Linux 手动修改屏幕分辨率