簡體   English   中英

如何使用多重處理在python中每個核心運行一個進程

[英]how to use multiprocessing to run one process per core in python

from multiprocessing import Process
import random
import time

def some_function(first, last):


processes = []

for m in range(1,16):
   n = m + 1
   p = Process(target=some_function, args=(m, n))
   p.start()
   processes.append(p)

for p in processes:
   p.join()

我希望該程序每個CPU內核僅啟動一個進程,並且在已運行的任何進程完成后,應啟動以下進程。 進行代碼需要進行哪些更改。

編輯:每個內核一個進程:例如,如果總共有30個進程和4個CPU內核,那么在任何時候我都只希望運行4個進程(最大)。 任一過程完成后,下一個過程應開始。 通過這種方式,正在運行的進程數不應超過no。 核心。

如果調用p.run()而不是p.start(),則它將一次僅運行一個進程,暫停直到該進程完成運行。 使用p.run(),不需要調用p.join()。

編輯:如果您嘗試在計算機上的每個線程上運行一個進程(如問題所述),並且您有16個線程,那么您已經擁有的代碼就沒有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM