Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 21, 2014 18:32:59

vivos
Зарегистрирован: 2014-03-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль multiprocessing

Здравствуйте. Прошу помощи в освоении модуля.
1) Создаем пул. Запускаем 5 процессов с функцией myfunc и аргументами initargs, так?
Я так понял, что процессыл выполняются синхронно?

p = Pool([numprocess=5 [,myfunc [, initargs]]])

2) Какое значение chunksize по умолчанию? Я так понял это единица?

p.map(func, iterable [, chunksize])

3) Что за callback? Можно пример?

p.apply_async(func [, args [, kwargs [, callback]]])




Отредактировано vivos (Апрель 21, 2014 18:46:10)

Офлайн

#2 Апрель 22, 2014 16:23:08

pylin
Зарегистрирован: 2014-04-22
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Модуль multiprocessing

1. Процессы в pool могут как раз запускаться в различное время насколько я понимаю, здесь же еще многое зависит от планировщика ОС и т.д.
3. callback – функция, которая будет вызываться в случае наступления каких-либо событий с выполняющимся процессом, например, функция отработала свое и возвращает результат. На это и должна среагировать функция callback.

Офлайн

#3 Апрель 24, 2014 19:09:44

vivos
Зарегистрирован: 2014-03-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль multiprocessing

Правильно ли я понял, что в случае с map_async(processLine, lines) если функция processLine работает с файловыми дескрипторами, то нужно делать в этой функции блокировку файлов с помощью Lock()?
file_lock = Lock()
file_lock.acquire()
s.write(res)
file_lock.release()

Отредактировано vivos (Апрель 24, 2014 19:10:42)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version