У меня есть 50 тестов, которые необходимо выполнить одновременно.
И я обнаружил, что один из тестов "A" стоит 1 минуту (без многопроцессорной обработки).
Я также пытаюсь выберите тест «A» и несколько других тестов (около 5) для выполнения с многопроцессорной обработкой, «A» тоже стоит 1 минуту.
Но если я выполню все тесты с многопроцессорной обработкой, тест «A» будет стоить почти 30 минут будет завершено.
Испытание "А" началось рано, но наконец закончилось. Как я могу найти причину root?
А как я могу узнать, всегда ли в пуле используются все рабочие или нет?
(я хочу напечатать текущие процессы.)
from multiprocessing import Pool
results = []
pool = Pool(processes=10) # start 10 worker processes
unfinishedTest = testList
for i in range(0, len(testList)):
async_result = pool.apply_async(run_test, kwds={'test':testList[i]})
results.append([async_result, testList[i]])
while True:
for r in results:
if r[0].ready() and r[1] in unfinishedTest: #Return whether the call has completed.
unfinishedTest.remove(r[1])
print(r[1], "finished")
print("unfinished " + str(len(unfinishedTest)) + " test:", unfinishedTest)
if len(unfinishedTest) == 0:
print("All tests done.")
break
time.sleep(0.25)
pool.close()
pool.join()