Multiprocessing on Python 3 Jupyter
Multiprocessing on Python 3 Jupyter
@Konates answer really helped me. Here is a simplified version using multiprocessing.pool:
import multiprocessing
def double(a):
return a * 2
def driver_func():
PROCESSES = 4
with multiprocessing.Pool(PROCESSES) as pool:
params = [(1, ), (2, ), (3, ), (4, )]
results = [pool.apply_async(double, p) for p in params]
for r in results:
print(t, r.get())
I succeed by using multiprocessing.pool.
I was inspired by this approach :
def test():
PROCESSES = 4
print(Creating pool with %d processesn % PROCESSES)
with multiprocessing.Pool(PROCESSES) as pool:
TASKS = [(mul, (i, 7)) for i in range(10)] +
[(plus, (i, 8)) for i in range(10)]
results = [pool.apply_async(calculate, t) for t in TASKS]
imap_it = pool.imap(calculatestar, TASKS)
imap_unordered_it = pool.imap_unordered(calculatestar, TASKS)
print(Ordered results using pool.apply_async():)
for r in results:
print(t, r.get())
print()
print(Ordered results using pool.imap():)
for x in imap_it:
print(t, x)
…etc
For more, the code is at : https://docs.python.org/3.4/library/multiprocessing.html?
Multiprocessing on Python 3 Jupyter
Another way of running multiprocessing jobs in a Jupyter notebook is to use one of the approaches supported by the nbmultitask package.