提高Python程序运行效率三种模式第一种:多进程multiprocessing模块
python是一个解释性语言,所以它不需要进行编译就可以直接使用:
-
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
-
解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是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!