Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2016 11:28:13

prince660
Зарегистрирован: 2016-02-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать многопоточность через pool.map?

Возникла необходимость реализовать многопоточность в приложении, был выбран вариант pool.map().
Такой вопрос:
Пытаюсь вставить в pool.map() функцию с двумя перемнными, одна из них это список, который map должна перебирать, а другая - это перемнная с одним значением, её нужно просто передать. Как это сделать?

Например:
list1 - это список значений, которые нужно перебрать через map
objekt - это объект который нужно просто передать в функцию

def funk(list1, objekt):
выполняемое действие

pool = Pool(4)
pool.map(?????????)

Отредактировано prince660 (Фев. 15, 2016 11:28:44)

Офлайн

#2 Фев. 15, 2016 20:55:21

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Как реализовать многопоточность через pool.map?

In [1]: def f(x):
   ...:     return x*x
   ...:
In [2]: list1 = [1, 2, 3, 4, 5]
In [3]: map(f, list1)
Out[3]: [1, 4, 9, 16, 25]



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#3 Фев. 16, 2016 08:50:51

prince660
Зарегистрирован: 2016-02-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать многопоточность через pool.map?

Этот пример я тоже находил в интернете и пробовал использовать, но мне он не подходит. У меня функция на входе должна получать Два значения и только Одно из этих двух значений должно итерироваться через map.

Офлайн

#4 Фев. 16, 2016 09:44:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как реализовать многопоточность через pool.map?

>>> from multiprocessing import Pool
>>> 
>>> def f(lst, n):
...     return n + sum(lst)
... 
>>> def g(t):
...     return f(*t)
... 
>>> lst = [([1, 2, 3], 5), ([4, 5, 6], 8)] * 5
>>> 
>>> p = Pool(5)
>>> p.map(g, lst)
[11, 23, 11, 23, 11, 23, 11, 23, 11, 23]
>>>



Отредактировано py.user.next (Фев. 16, 2016 09:45:53)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version