If you need to run a for loop in parallel, then you can do one of the following:

Option 1 – Using multiprocessing

1
2
3
4
5
6
7
8
9
import multiprocessing

def sumall(value):
    return sum(range(1, value + 1))

pool_obj = multiprocessing.Pool()

answer = pool_obj.map(sumall,range(0,5))
print(answer)

Option 2 – Using joblib module

1
2
3
4
5
6
7
8
from joblib import Parallel, delayed
import math

def sqrt_func(i, j):
    time.sleep(1)
    return math.sqrt(i**j)

Parallel(n_jobs=2)(delayed(sqrt_func)(i, j) for i in range(5) for j in range(2))

Option 3 – Using asyncio

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import asyncio
import time

def background(f):
    def wrapped(*args, **kwargs):
        return asyncio.get_event_loop().run_in_executor(None, f, *args, **kwargs)
    return wrapped

@background
def your_function(argument):
    time.sleep(2)
    print('function finished for '+str(argument))

for i in range(10):
    your_function(i)

print('loop finished')