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())

enter

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.

Leave a Reply

Your email address will not be published. Required fields are marked *