Этот фрагмент кода в потоке Python, кажется, выполняет только одну запись repoPathList
и ничего не делает.Наверное, зависает.Я не уверен, что мои два уровня параллелизации имеют проблемы.Вот краткий код: он печатает только эту строку print("STARTED:" + repoPath)
и никогда не попадает в эту строку print("COMPLETED:" + repoPath)
в первой отображенной функции computeRepoMetrics(repoPath)
.Затем он никогда не обрабатывает другую запись repoPathList
.Что-то не так с моим распараллеливанием?
repoPathList = ["/Users/soft/PycharmProjects/Pydriller/gitRepos/attic-whirr",
"/Users/soft/PycharmProjects/Pydriller/gitRepos/sqoop",
"/Users/soft/PycharmProjects/Pydriller/gitRepos/ranger",
"/Users/soft/PycharmProjects/Pydriller/gitRepos/falcon"
"/Users/soft/PycharmProjects/Pydriller/gitRepos/aries"]
def computeRepoMetrics(repoPath):
print("STARTED:" + repoPath)
gr = GitRepository(repoPath)
parallelMetricProcessing(analyzeCommits(repoPath,gr), calculateStructAndSemanticScattering(gr), 30,gr)
print("COMPLETED:" + repoPath)
def parallelMetricProcessing(intervalsData, scatteringFilePairData, threads,gr):
tupledIntervalsData =[]
for i in range(len(intervalsData)):
if i > 0:
tupledIntervalsData.append((intervalsData[i],intervalsData[i-1],i))
else:
tupledIntervalsData.append((intervalsData[i], [],i))
data = map((lambda x: (x,scatteringFilePairData,gr)), tupledIntervalsData)
pool = ThreadPool(threads)
pool.map(compute_fileMetrics, data)
pool.close()
pool.join()
def main():
pool = ThreadPool(5)
pool.map(computeRepoMetrics, repoPathList)
pool.close()
pool.join()