#python #multiprocess
#python #многопроцессорность
Вопрос:
В настоящее время я выполняю задание, тогда одновременно будут запущены 3 процесса.
def someFunctionJob(x,y,**kwargs):
..... Code which will do some job
def manager(x,values):
y = uuid.uuid4().hex
pr = Process(target=someFunctionJob,args=(x,y,),kwargs=values)
pr.start()
def main(x,values,settings):
for i in settings:
if xyz in ["abc"]:
manager(x,values)
elif lender in ["abc1"]:
manager(lender,product)
elif lender in ["abc2"]:
manager(x,values)
Что мне нужно, так это то, что он будет управляться очередью:
Например, если workers = 2
Выполнение будет выглядеть так:
process 1
process 2
waiting till any of the processes will be finished
process 3
Ответ №1:
processes=[]
for _ in range(2):
p = Process(target=something )
p.start()
processes.append(p)
for process in processes:
process.join()
p = Process(target=something )
p.start()
Что делает этот код, так это то, что он выполняет 2 процесса выше, затем ожидает их завершения и запускает другой отдельный процесс.
Комментарии:
1. Могу ли я добавить параметры для потоков
t = threading.Thread(target=something,args=(x,y,),kwargs=values ) like this
?2. Да, точно. Если это полезно, примите мой ответ, чтобы помочь и другим.
3. @ElvinJafarov извините за поздний ответ, который отсутствовал и не смог его протестировать, проблема, с которой я столкнулся, заключается в том, что он работает не так, как должен, поскольку он продолжает выполнять два задания
4. @martineau у вас есть какие-либо предложения или источник, который я могу прочитать, чтобы глубже изучить этот процесс?
5. @OksanaOk: Да. Я думаю, что вам нужно либо a
multiprocessing.Pool
, либо aconcurrent.futures.ProcessPoolExecutor
.