python是一個解釋性語言,所以它不需要進行編譯就可以直接使用:
1. 編譯型語言在程序執行之前,先會通過編譯器對程序執行一個編譯的過程,把程序轉變成機器語言。運行時就不需要翻譯,而直接執行就可以了。最典型的例子就是C語言。
2. 解釋型語言就沒有這個編譯的過程,而是在程序運行的時候,通過解釋器對程序逐行作出解釋,然后直接運行,最典型的例子是Ruby
因為編譯型語言在程序運行之前就已經對程序做出了“翻譯”,所以在運行時就少掉了“翻譯”的過程,所以效率比較高。
那我們就得想把辦法提升我們程序運行的效率————multiprocessing多進程運行
個人理解就是將原有的程序復制一份到新的內存空間,行程彼此相對獨立的多個程序運行
importmultiprocessingimporttimedefsum_1(num):
num1=0while num1
num1+= 1
defsum_2(num2):
num2=0while num2
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!