Скажем, у меня есть следующие циклы:
for i in range(50):
for j in range(50):
for k in range(50):
for l in range(50):
some_function(i,j,k,l)
some_function
оказывается веб-шабером для большого количества маленьких файлов, поэтому имеет смысл распараллелить это.
Но, насколько я могу судить, concurrent.futures принимает только один итератор, поэтому я не уверен, как к этому подойти. То, что я мог бы сделать, это выразить (два) их как один итератор, такой как:
def in_between_function(a):
x = math.floor(a/5)
y = a % y
some_function(x,y)
with concurrent.futures.ThreadPoolExecutor(max_workers=100) as executor:
future = executor.map(in_between_function, range(50*50))
Это не выглядит слишком плохо, но я хочу сделать это правильно;если я добавлю это к большему количеству итераторов, отрицательных чисел или если итератор не является линейным, то это будет кошмарным сном.