Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 9, 2011 22:21:43

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

multiprocessing

узнал что для разбивки по ядрам нужно использовать процесы. Ну вот почти пример из оф. документации

>>> from multiprocessing import Process
>>> import time
>>> def g():
for x in range(-100,0):
print(x)
time.sleep(1)


>>>
>>> p = Process(target=g)
>>> p.start()
>>> p.join()
ровным счётом ничего не происходит.
Только говорит что процесс уже начат, если я пытаюсь начать его снова.

Кто-то подскажет, может в чём ошибка, или оно не должно работать в IDE. Или оно не работает п питоне 3.2?



Офлайн

#2 Авг. 10, 2011 08:35:45

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

multiprocessing

Alex_Kutsan
Вроде как print у нас не thread-safe. Попробуйте модуль logging для вывода значений в консоль.



Офлайн

#3 Авг. 10, 2011 13:24:57

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

multiprocessing

Процесс скорее всего выполняется корректно, но пишет в свой stdout, не связанный с вводом/выводом IDLE. В консольной же версии питона (и тем более, если запустить этот код из скрипта) код работает корректно.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version