0

我正在使用具有两个内核的计算机中的并行 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 个,依此类推。据我所知,这不应该发生。有谁知道为什么会这样?

4

1 回答 1

0
于 2015-02-06T12:14:30.200 回答