[英]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.