Вы можете реализовать что-то вроде ниже, чтобы решить проблему. потоки будут запускать полную программу, поэтому цикл не увеличивается должным образом.
Здесь я использовал map (применить данную функцию к каждому элементу данной итерируемой), чтобы передать параметр функции
from multiprocessing.dummy import Pool as ThreadPool
import time
import datetime
def operation(value):
# whatever operation needs to be performed
print("{} : Thread no {}\n".format(datetime.datetime.now(),value))
time.sleep(20)
# Data/tasks needs to be processed added in list
Data = [1,2,3,4,5,6,7,8,9]
# Creating pools
c_pool = ThreadPool(5) # using 5 threads
c_pool.map(operation, Data) # using map method to perform operation
c_pool.close()
c_pool.join()
будет выполнять 5 задач / операцию одновременно.
Здесь 1-й 5 взят для процесса
2019-04-26 **12:47:37**.800258 : Thread no 1
2019-04-26 **12:47:37**.800258 : Thread no 2
2019-04-26 **12:47:37**.800258 : Thread no 3
2019-04-26 **12:47:37**.800258 : Thread no 4
2019-04-26 **12:47:37**.800258 : Thread no 5
Здесь отдых 5 начался через 20 секунд (time.sleep (20))
2019-04-26 **12:47:57**.809258 : Thread no 6
2019-04-26 **12:47:57**.809258 : Thread no 7
2019-04-26 **12:47:57**.809258 : Thread no 8
2019-04-26 **12:47:57**.809258 : Thread no 9