我正在使用具有两个内核的计算机中的并行 python 中的下一个代码(这只是完整代码的一部分)
import pp
from scheduling import *
from numpy import *
def sched_pp_process(B,T,D,BL,blocks,number_block,number_core):
ppservers = ()
job_server = pp.Server(number_core,ppservers)
jobs = [(i, job_server.submit(local_sched,(B,T,D,blocks[i][0],blocks[i][1],i), (), ("MineLink","time","sys","gurobipy"))) for i in range(number_block)]
for i, job in jobs:
if job() == ():
pass
else:
BL.append(job())
def block_est_list(B,T,BL,blocks,number_block,case):
if case == 1:
for i in range(number_block):
blocks.append((random.randint(0,B+1),random.randint(1,T+1)))
elif case == 2:
for i in range(number_block):
blocks.append((random.randint(0,B+1),random.randint(T/2+1,T+1)))
B = 4004
D = 2
T = 4
number_block = 100
blocks = []
BL = []
block_est_list(B,T,BL,blocks,number_block,1)
sched_pp_process(B,T,D,BL,blocks,number_block,2)
该local_sched
函数太大,无法在此处指定,但它的作用是使用 gurobipy 解决优化问题。当我指定 2 个核心 ( )时,每个核心number_core = 2
只能运行 12 个进程,因此即使有 100 个进程,我也只能运行 24 个进程;之后,python 停止工作,即使在 windows 任务管理器中说 python 仍在运行。发生这种情况时,我必须使用 de windows 任务管理器停止进程才能再次使用 de 命令提示符。如果我指定 3 个核心,那么我可以运行 100 个进程中的 36 个,依此类推。据我所知,这不应该发生。有谁知道为什么会这样?