提高Python程序运行效率三种模式第一种:多进程multiprocessing模块
python是一個解釋性語言,所以它不需要進行編譯就可以直接使用:
編譯型語言在程序執行之前,先會通過編譯器對程序執行一個編譯的過程,把程序轉變成機器語言。運行時就不需要翻譯,而直接執行就可以了。最典型的例子就是C語言。
解釋型語言就沒有這個編譯的過程,而是在程序運行的時候,通過解釋器對程序逐行作出解釋,然后直接運行,最典型的例子是Ruby
因為編譯型語言在程序運行之前就已經對程序做出了“翻譯”,所以在運行時就少掉了“翻譯”的過程,所以效率比較高。
那我們就得想把辦法提升我們程序運行的效率————multiprocessing多進程運行
個人理解就是將原有的程序復制一份到新的內存空間,行程彼此相對獨立的多個程序運行
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import multiprocessing import time def sum_1(num):num1 =0while num1 < num:print(num)num1 += 1def sum_2(num2):num2 =0while num2 < num:print(num)num2 += 1print("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程序运行效率三种模式第一种:多进程multiprocessing模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中threading的joi
- 下一篇: Python可变序列中的一些坑