Gurobi 的多处理兼容性问题
multiprocessing compatibility issue with Gurobi
以下平方函数的简单多重处理工作正常:
from multiprocessing import Pool
class A(object):
def square(self, x):
return x * x
def test(self):
pool = Pool()
result = pool.map(self.square, range(5))
return result
但是当我像这样在 class 中添加 Gurobi 模型的初始化时,
from multiprocessing import Pool
from gurobipy import *
class A(object):
def __init__(self):
self.b = Model()
def square(self, x):
return x * x
def test(self):
pool = Pool()
result = pool.map(self.square, range(5))
return result
A().test()
它returns出现以下错误:
File "model.pxi", line 290, in gurobipy.Model.__getattr__ (../../src/python/gurobipy.c:53411)
KeyError: '__getstate__'
Gurobi 的串行版本工作正常:
from gurobipy import *
class A(object):
def __init__(self):
self.b = Model()
def square(self, x):
return x * x
def test(self):
res = [self.square(i) for i in range(5)]
return res
A().test()
Gurobi API 不支持跨多个进程或线程共享单个 Gurobi 环境。如果要在多个进程或线程中解决多个模块,则必须在每个进程或线程中显式创建多个Gurobi环境。
以下平方函数的简单多重处理工作正常:
from multiprocessing import Pool
class A(object):
def square(self, x):
return x * x
def test(self):
pool = Pool()
result = pool.map(self.square, range(5))
return result
但是当我像这样在 class 中添加 Gurobi 模型的初始化时,
from multiprocessing import Pool
from gurobipy import *
class A(object):
def __init__(self):
self.b = Model()
def square(self, x):
return x * x
def test(self):
pool = Pool()
result = pool.map(self.square, range(5))
return result
A().test()
它returns出现以下错误:
File "model.pxi", line 290, in gurobipy.Model.__getattr__ (../../src/python/gurobipy.c:53411)
KeyError: '__getstate__'
Gurobi 的串行版本工作正常:
from gurobipy import *
class A(object):
def __init__(self):
self.b = Model()
def square(self, x):
return x * x
def test(self):
res = [self.square(i) for i in range(5)]
return res
A().test()
Gurobi API 不支持跨多个进程或线程共享单个 Gurobi 环境。如果要在多个进程或线程中解决多个模块,则必须在每个进程或线程中显式创建多个Gurobi环境。