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 多进程 提高运行效率相关推荐

  1. python提高运行效率_提高 Python 运行效率的六个窍门

    窍门一:关键代码使用外部功能包 Python简化了许多编程任务,但是对于一些时间敏感的任务,它的表现经常不尽人意.使用C/C++或机器语言的外部功能包处理时间敏感任务,可以有效提高应用的运行效率.这些 ...

  2. 将python代码转化为c语言代码,提高运行效率

    将python代码转化为c语言代码,提高运行效率 首先,需要安装cpython库: pip install cython 安装完成之后,写一段简单的代码,例如下面这个利用递归求斐波那契数列的函数,然后 ...

  3. python多进程存储数据_Python 多进程及进程间通信

    python 因 GIL 的存在,处理计算密集型的任务时无法高效利用多核 CPU 的计算资源,这时就需要使用多进程来提高对 CPU 的资源利用.Python 多进程主要用 multiprocessin ...

  4. python多进程和多线程使用场景_Python36 多线程、多进程的使用场景

    多线程与多进程的使用场景 io 操作不占用CPU(从硬盘.从网络.从内存读数据都算io) 计算占用CPU(如1+1计算) python中的线程是假线程,不同线程之间的切换是需要耗费资源的,因为需要存储 ...

  5. Python 多进程开发与多线程开发

    我们先来了解什么是进程? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程 ...

  6. python多进程断点续传分片下载器

    python多进程断点续传分片下载器 标签:python 下载器 多进程 因为爬虫要用到下载器,但是直接用urllib下载很慢,所以找了很久终于找到一个让我欣喜的下载器.他能够断点续传分片下载,极大提 ...

  7. 一文看懂Python多进程与多线程编程(工作学习面试必读)

    进程(process)和线程(thread)是非常抽象的概念, 也是程序员必需掌握的核心知识.多进程和多线程编程对于代码的并发执行,提升代码效率和缩短运行时间至关重要.小编我今天就来尝试下用一文总结下 ...

  8. Python 多进程向同一个文件写数据

    1.遇到的问题: 之前,因为考虑到Python多进程可以充分利用CPU核数,提高程序的效率,所以就使用多进程写文件.但是向同一个文件写入数据的时候,由于多进程是并发进行,操作系统中会不清楚到底要写入哪 ...

  9. Python 多进程 multiprocessing 使用示例

    参考:http://blog.csdn.net/qdx411324962/article/details/46810421 参考:http://www.lxway.com/4488626156.htm ...

最新文章

  1. python字典键操作
  2. Https协议/SSL协议
  3. postman请求soap 请求_postman中请求如何传递对象到spring controller?
  4. vue点击按钮切换显示不同内容_邂逅Vue
  5. 20 岁发表 SCI 的学霸,梦想用算法改变世界
  6. configuration id is generated based on page guid
  7. db2 最大分区数_db2 查询表分区数据库
  8. es6 __proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
  9. GaussDB(for MySQL)如何快速创建索引?华为云数据库资深架构师为您揭秘
  10. Spring MVC起步(一)
  11. PWM波、方波的输出与捕获
  12. 制作mac系统引导盘
  13. win7磁盘管理分区,改变页面文件卷,删除卷就由灰变黑了!
  14. CentOS 7 安装rar解压rar
  15. java输入月份获得该年的这个月最后一个工作日是多少号(星期一到星期五)
  16. 解读全球十大公司物联网战略,一个万物智能的世界即将到来
  17. 《数字图像处理 MATLAB版》学习笔记
  18. 中型B2C电商行业BI系统推荐?
  19. 闭关修炼(二十五)基础web安全
  20. Linux 手动修改屏幕分辨率

热门文章

  1. 操作系统教程第六版——第四章课后作业
  2. premiere介绍和安装方法
  3. Ps学习(圆形选区和自由变换的运用)
  4. linux 7z压缩、解压命令
  5. 一个登录页面的测试用例——软件测试
  6. IDEA繁体问题解决
  7. 计算机网络管理员工作周记,计算机java开发实习周记20篇
  8. 机电一体化PLC毕业设计、课程设计案例分享/液压、电梯、洗衣机、送料控制、步进电动机、装瓶流水线、大小球分拣传送、饮料罐装、自动售货机、立体车库、洗衣机、喷泉、机械手、卧式镗床、温度控制、供水系统……
  9. 51单片机静态数码管原理及代码
  10. 拒绝选择恐惧症!国内好用的Markdown编辑器之有道云笔记