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

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

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教程:关于 [lambda x: x*i for i in range(4)] 理解

题目: lst = [lambda x: x*i for i in range(4)] res = [m(2) for m i...

python异常处理及内置模块

python异常处理及内置模块

异常处理 有时候我们在...

python 定制类

python 中可以使用一些函数,对类进行定制,方便我们的使用。 比如__slots__函数、__str__函数、__repr_...

Python中一些高效的数据操作

1.列表统计 char...

发表评论

访客

看不清,换一张

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