Also folgendes Problem: ich möchte einen Funktionsaufruf auf mehreren Prozessoren parallelisieren. Die Funktion hat mehrere (!) Inputparameter, einer davon soll über map_sync kommen, die anderen sollen statisch sein. Da map_sync alle Parameter iteriert, habe ich versucht, die statischen Parameter über "push" zu übergeben.
Das nachstehende Beispiel - natürlich stark vereinfacht - illustriert, was ich vorhabe:
Code: Alles auswählen
In [26]:
from IPython.parallel import Client
def mul(b):
return a*b
def mmul(a,b):
lvClient = Client()
v = lvClient[:]
v.push(dict(a=a))
return v.map_sync(mmul, range(b))
In [27]: mmul(2,5)
Out[27]: [0, 2, 4, 6, 8]
Code: Alles auswählen
In [24]: import mymultitest
Out[24]: <module 'mymultitest' from 'mymultitest.pyc'>
In [25]: mt = mymultitest.mmul(2,5)
[0:apply]:
-------------------------------------------------------------------------
NameError Traceback (most recent call last)<string> in <module>()
E:\iPython\mymultitest.pyc in mmul(b)
4
5 def mul(b):
----> 6 return a*b
7
8 def mmul(a,b):
NameError: global name 'a' is not defined