2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 joblib и переменные обьекта
Сообщение16.04.2016, 16:59 
Вот мой код:

Код:
from joblib import Parallel, delayed

def main():
    a = Par_test()
    b = Par_test()
    temp_list = [a, b]

    Parallel(n_jobs=2)(delayed(update_field)(el) for el in temp_list)
    print(a.sample_field)
    print(b.sample_field)


def update_field(some_object):
    some_object.sample_field = 'some_value'


class Par_test:
    def __init__(self):
        self.sample_field = None


if __name__ == '__main__':
    main()


Я от него жду
Код:
some_value
и
Код:
some_value
, a получаю
Код:
None
и
Код:
None
В чем ошибка?

 
 
 
 Re: joblib и переменные обьекта
Сообщение16.04.2016, 18:57 
По умолчанию Parallel создаёт отдельные процессы, поэтому объекты, изменённые в дочерних процессах остаются неизменными в родительском. Вы можете использовать вместо процессов потоки:
Используется синтаксис Python
Parallel(n_jobs=2, backend="threading")(delayed(update_field)(el) for el in temp_list)
или использовать какой-либо метод межпроцессного взаимодействия.

 
 
 
 Re: joblib и переменные обьекта
Сообщение16.04.2016, 19:56 
Большое спасибо, Progger! Видать мне все таки надо будет разобраться между потоками и процессами. Я хотел на халяву проскачить.

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group