日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Python编程基础:第六十节 多进程Multiprocessing

發布時間:2025/4/5 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python编程基础:第六十节 多进程Multiprocessing 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第六十節 多進程Multiprocessing

  • 前言
  • 實踐

前言

多進程能夠在不同的CPU核心上并行運行任務,可以繞過用于線程的GIL。
多進程:更適合密集計算相關任務(cpu使用率高)。
多線程:更好地處理與IO相關的任務。

實踐

我們來實現一個數據求和的功能,例如從0加到100000000。首先我們使用單個進程進行計算:

from multiprocessing import Process, cpu_count import time result = {} def counter(num_1, num_2, name):count = 0for i in range(num_1, num_2):count += iresult[name] = countprint(result)def main():a = Process(target=counter, args=(0, 100000000, '進程1'))a.start()a.join()print('運行耗時: {} 秒'.format(time.perf_counter()))if __name__ == '__main__':main() >>> {'進程1': 4999999950000000} >>> 運行耗時: 13.5747503

接下來我們使用兩個進程進行計算:

from multiprocessing import Process, cpu_count import time result = {} def counter(num_1, num_2, name):count = 0for i in range(num_1, num_2):count += iresult[name] = countprint(result)def main():a = Process(target=counter, args=(0, 50000000, '進程1'))a.start()b = Process(target=counter, args=(50000000, 100000000, '進程2'))b.start()a.join()b.join()print('運行耗時: {} 秒'.format(time.perf_counter()))if __name__ == '__main__':main() >>> {'進程1': 1249999975000000} >>> {'進程2': 3749999975000000} >>> 運行耗時: 9.9812741

接下來我們嘗試跑滿所有的CPU核心:

from multiprocessing import Process, cpu_count import time result = {} def counter(num_1, num_2, name):count = 0for i in range(num_1, num_2):count += iresult[name] = countprint(result)def main():print(cpu_count()) # 計算本機的CPU核心數目a = Process(target=counter, args=(0, 25000000, '進程1'))a.start()b = Process(target=counter, args=(25000000, 50000000, '進程2'))b.start()c = Process(target=counter, args=(50000000, 75000000, '進程3'))c.start()d = Process(target=counter, args=(75000000, 100000000, '進程4'))d.start()a.join()b.join()c.join()d.join()print('運行耗時: {} 秒'.format(time.perf_counter()))if __name__ == '__main__':main() >>> 4 >>> {'進程3': 1562499987500000} >>> {'進程1': 312499987500000} >>> {'進程2': 937499987500000} >>> {'進程4': 2187499987500000} >>> 運行耗時: 5.9548173

發現當跑滿所有的CPU核心時速度是最快的(并不是越多越好哦,再多的話速度反而慢了),所以我們一般設定多進程的進程數目為CPU的核心數目

總結

以上是生活随笔為你收集整理的Python编程基础:第六十节 多进程Multiprocessing的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。