python multithreading,multiprocessing效率對比

import multiprocessing as mp
import threading as td
import time

def job(q):
    res = 0
    for i in range(1000000):
        res += i + i ** 2 + i**3
    q.put(res)

def multcore():
    q = mp.Queue()
    p1 = mp.Process(target=job,args=(q,))
    p2 = mp.Process(target=job,args=(q,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    res1 = q.get()
    res2 = q.get()
    print('multcore: ',res1 + res2)

def normal():
    res = 0
    for _ in range(2):
        for i in range(1000000):
            res += i + i ** 2 + i**3
    print('normal: ',res)

def multithread():
    q = mp.Queue()
    t1 = td.Thread(target=job,args=(q,))
    t2 = td.Thread(target=job,args=(q,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    res1 = q.get()
    res2 = q.get()
    print('multithread: ',res1 + res2)

if __name__ == '__main__':
    st = time.time()

    normal()
    st1 = time.time()
    print('normal time: ',st1 - st)

    multithread()
    st2 = time.time()
    print('multithread time: ', st2 - st1)

    multcore()
    print('multcore time: ',time.time() - st2)

result:

normal time:  1.3973419666290283
multithread time:  1.416612148284912
multcore time:  0.7420649528503418
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 面試時經常被問到數組去重的問題,個人覺得這種問題其實沒太大的作用,畢竟在實際工作中很少能遇到的很大的數組,所以不論...
    fighterboy閱讀 250評論 0 0
  • //需要AFN //.h //AFNetworking + (void)post:(NSString *)url ...
    CHADHEA閱讀 797評論 0 0
  • Demo代碼和引用知識點都參考自 《理解Python并發編程一篇就夠了|PoolExecutor篇》--董偉明 或...
    蔣狗閱讀 16,290評論 1 2
  • 之前就爬過拉勾網,但是遇到一些錯誤一直沒有辦法解決,果斷放棄了,今天又重新試著寫寫看,對于一個菜鳥來說,真的都是處...
    小小佐閱讀 1,392評論 0 0
  • 就象毫米、微米一樣,納米是一個尺度概念,是一米的十億分之一,并沒有物理內涵。當物質到納米尺度以后,大約是在...
    秋山知紅葉閱讀 2,809評論 6 5