Процесс стоит больше времени при использовании многопроцессорности - PullRequest
0 голосов
/ 08 января 2020

У меня есть 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()
...