提高Python程序运行效率三种模式第一种:多进程multiprocessing模块
python是一个解释性语言,所以它不需要进行编译就可以直接使用:
1. 编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
2. 解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby
因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。
那我们就得想把办法提升我们程序运行的效率————multiprocessing多进程运行
个人理解就是将原有的程序复制一份到新的内存空间,行程彼此相对独立的多个程序运行
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!
心存热爱,积龟步而行千里。