У меня есть следующий код, который хорошо работает с одним процессом, но не работает более чем с одним. Нет сообщений об ошибках, но свойства класса, похоже, не сохраняются, и я понятия не имею, почему или как это исправить. Я бегу код под windows
class T:
a = 0
b = 0
c = 0
def do_something(self):
self.a = 10
self.b = 5
self.c = 1
return 'ok'
def call_T(a):
return a.do_something()
if __name__ == '__main__':
B = T()
print(B.a)
B.do_something()
print(B.a)
C = [T() for i in range(20)]
print(C[14].c)
F = Parallel(n_jobs=2)(delayed(call_T)(C[i]) for i in range(20))
print(F)
print(C[14].b)
Результаты
0
10
0
['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok']
0
теперь для того же кода измените только n_jobs = 1, и это даст мне правильные ожидаемые результаты
0
10
0
['ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok']
5
Я не знаю, что не так. Любая помощь приветствуется