Управление многопоточностью без функции сна в питоне - PullRequest
0 голосов
/ 24 сентября 2018

Если у нас 10 потоков, из 10 я хочу запустить первые 5 потоков одновременно, и после завершения / исключения только этих 5 потоков я хочу запустить другие 5 потоков, которые также должны выполняться автоматически, без использования каких-либофункция сна в питоне

import threading
import os 
import sys
import time
from datetime import datetime,timedelta
now=datetime.now()

print ("starting time ",now)
emptylist=[]
list=[1,2,3,4,5,6,7,8,9,10,11,12]

def Add(num1):
    num2=1234
    num3=num1+num2
    #print num3
    #print("\n") 
    return num3







#print list


count=0
for i in list:

    t=threading.Thread(target=Add, args=(i,))
    emptylist.append(t)





for j in range(0,len(emptylist)+1,1):
    emptylist[j].start()
    count+=1
    if count%5 ==0:

for k in emptylist:
    k.join()

1 Ответ

0 голосов
/ 24 сентября 2018

В общем случае лучше избегать использования потоков вручную и использовать исполнителя пула потоков.Что-то вроде

with futures.ThreadPoolExecutor(workers=5) as executor:
    result = executor.map(Add, [0, 1, 2, 3, 4])

и так далее для других ваших аргументов.

...