Уведомления

Группа в Telegram: @pythonsu

#1 Март 4, 2019 18:02:56

Dmti
Зарегистрирован: 2019-03-02
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Process не получается правильно вернуть массив

Урок из учебника тупо скопировал. Вставил принты для контроля прохождения программы. https://docs.python.org/3/library/multiprocessing.html глава общая память

 #
from multiprocessing import Process, Value, Array
#
def f(n, a):
    print(f)
    n.value = 3.1415927
    print(n.value)
    for i in range(len(a)):
        a[i] = -a[i]
#
if __name__ == '__main__':
    num = Value('d', 0.0)
    arr = Array('i', [0, 0, 0, 0, 0])
    print(num.value)
    print(arr[:])
#
    p = Process(target=f, args=(num, arr))
    print(p)
    p.start()
    print(p)
    p.join()
    print(p)
#
    print(num.value)
    print(arr[:])
#

Выполнение останавливается на команде p.join(). Если её закомментировать то печатаются нули. Что не так? Я уже грешу на кривой питон а не руки.

Офлайн

#2 Март 4, 2019 18:25:36

Dmti
Зарегистрирован: 2019-03-02
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Process не получается правильно вернуть массив

Я через консоль ещё не разу не работал только через IDE. А в чем принципиальная разница как запустить?

Офлайн

#3 Март 4, 2019 18:27:01

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Process не получается правильно вернуть массив

Dmti
Выполнение останавливается на команде p.join()
не должно, все выполняется.

 >>>
0.0
[1, 1, 1, 1, 1]
<Process(Process-1, initial)>
<Process(Process-1, started)>
<Process(Process-1, stopped)>
3.1415927
[-1, -1, -1, -1, -1]
>>>
Dmti
. Если её закомментировать то печатаются нули. Что не так?
не так то что у вас
 arr = Array('i', [0, 0, 0, 0, 0])
функция же меняет знак на протвоположный, но поскольку у вас нули, то на выходе вы всеравно получите нули.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#4 Март 4, 2019 18:32:36

Dmti
Зарегистрирован: 2019-03-02
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Process не получается правильно вернуть массив

Точно через консоль все работает все примеры прогнал работают. Всем спасибо за ответы.

Отредактировано Dmti (Март 4, 2019 18:33:02)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version