import numpy as np
from pathos.multiprocessing import ProcessingPool as Pool
from memory_profiler import profile
class MyClass:
def __init__(self, my_list):
self.name = 'foo'
self.my_list = my_list
def __iter__(self):
for item in self.my_list:
yield np.random.rand(100,100)
def expensive_function(foo):
foo[0,0]
my_list = range(100000)
myclass = MyClass(my_list)
iter(myclass) # should not return anything
p = Pool(processes=4, maxtasksperchild=50)
p.map(expensive_function, iter(myclass), chunksize=100)