проблема многопроцессорной совместимости с Gurobi - PullRequest
0 голосов
/ 28 мая 2018

Следующая простая многопроцессорная функция квадрата работает нормально:

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

Но когда я добавляю инициализацию модели 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()

Возвращаетсяследующая ошибка:

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()

1 Ответ

0 голосов
/ 12 июня 2018

API Gurobi не поддерживает совместное использование одной среды Gurobi между несколькими процессами или потоками.Если вы хотите решить несколько модулей в нескольких процессах или потоках, вы должны явно создать несколько сред Gurobi в каждом процессе или потоке.

...