婚禮策劃網(wǎng)站模板網(wǎng)絡精準推廣
文章目錄
- 一、明確自身cpu可并行的核數(shù)
- 二、根據(jù)所有任務計算在各個核上平均跑多少任務
- 三、最后把任務劃分在不同的核上跑
- 四、拿來主義
此為利用cpu并行計算的能力,充分利用cpu在循環(huán)時并行計算。其實也是受C++并行操作的影響,如果需要C++版,可以移步C++thread并行筆記
一、明確自身cpu可并行的核數(shù)
max_workers = os.cpu_count()
二、根據(jù)所有任務計算在各個核上平均跑多少任務
use_cpu_pre_task = all_task_size // max_workers
三、最后把任務劃分在不同的核上跑
def process_function(range_rask, arg1, arg2):for i in range(ranges.start, ranges.stop):XXXwith concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:for i in range(max_workers):start_idx = i * use_cpu_pre_taskend_idx = all_task_size if i == max_workers - 1 else (i + 1) * use_cpu_pre_taskrange_task = range(start_idx, end_idx)executor.submit(process_function, range_task, arg1, arg2)
四、拿來主義
def process_function(range_rask, arg1, arg2):for i in range(ranges.start, ranges.stop):XXXif __name__ == "__main__":max_workers = os.cpu_count()use_cpu_pre_task = all_task_size // max_workerswith concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:for i in range(max_workers):start_idx = i * use_cpu_pre_taskend_idx = all_task_size if i == max_workers - 1 else (i + 1) * use_cpu_pre_taskrange_task = range(start_idx, end_idx)executor.submit(process_function, range_task, arg1, arg2)
參考鏈接:concurrent.futures — 啟動并行任務