提高Python程序运行效率三种模式第一种:多进程multiprocessing模块

枫铃3年前 (2021-07-23)Python256

python是一个解释性语言,所以它不需要进行编译就可以直接使用:

  1. 编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。

  2. 解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby

因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。

那我们就得想把办法提升我们程序运行的效率————multiprocessing多进程运行

个人理解就是将原有的程序复制一份到新的内存空间,行程彼此相对独立的多个程序运行

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import multiprocessing
import time
def sum_1(num):
    num1 =0
    while num1 < num:
        print(num)
        num1 += 1


def sum_2(num2):
    num2 =0
    while num2 < num:
        print(num)
        num2 += 1

print("The program is begin %s") % time.time()
p1 = multiprocessing.Process(target=sum_1, args=(10000, ))
p2 = multiprocessing.Process(target=sum_2, args=(10000, ))
p1.start() 
p2.start()p1.join()p2.join()
print("The program is over  %s") % time.time()

p1 与 p2 为两个独立的程序,互相直接数据不会共享,各自独立运行各自的函数。

p1 = multiprocessing.Process(target=sum_1, args=(10000, ))
p2 = multiprocessing.Process(target=sum_2, args=(10000, ))

target = 后面是你需要新创建子进程执行的函数名,args=后面必须是一个元组,写入的是你需要给程序传递的参数,没有一个以上的参数时需要加,分隔

p1.start() 
p2.start()

通过.start()方法来开启新的子进程,主进程开启新的子进程后会继续往下运行自己的代码

p1.join()
p2.join()

通过.join()方法来堵塞主进程,不让主进程继续往下执行相关代码,而是等待子进程全部执行完毕后,主进程解除堵塞继续往下执行。

因为进程之间相对独立,如果需要通信的话我们可以使用multiprocessing.Queue,Queue的功能是将需要传输的数据通过put放在队里中, 然后其他进程可以通过get获取。下次再整理,有一起学python的吗,可以一起交流啊,最近写个简单的web服务器老是莫名其妙奔溃,急需要找个人一起debug!

相关文章

利用python同步windows和linux文件

写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,...

爬虫基本原理

爬虫基本原理 一、爬虫是什么? 百度百科和维基百科对网络爬虫的定义:简单来说爬虫就是抓取目标网站内容的工具,一般是根据定义的行...

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Django 知识补漏单例模式

单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式&#x...

Django基础知识MTV

Django简介 Django是使用Python编写的一个开源Web框架。可以用它来快速搭建一个高性能的网站。 Django也是一个MVC框架。但是在Dj...

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。