Я использую multiprocess.Pool
для запуска нескольких git clone
процессов, но когда репо git намного больше других, процесс git clone
зависает.
Пул, который я использовал как следует
def ProcessHelper(runfunc,incl_infos,project_root,skip_dirs):
p = Pool(processNum)
multi_res = [p.apply_async(runfunc, args=(incl_info,project_root,skip_dirs,)) for incl_info in incl_infos]
p.close()
p.join()
resMesList = []
for res in multi_res:
resMes = str(res.get())
if (resMes.find("Failed") != -1):
resMesList.append(resMes)
Затем функция потока используется для проверки, является ли это git репо, и клонирует данные, если они есть.
def runfunc(incl_info,project_root,skip_dirs):
if incl_info == 0:
git_url = project_root["git_url"]
dir_path = project_root["dir_path"]
GitCloneInShell(git_url,dir_path)
def GitCloneInShell(git_url,dir_path):
cmd = ("git clone %s %s " % (git_url, dir_path))
LogInfo("git clone cmd : %s" % cmd)
status = subprocess.call(cmd, shell=True)
return status
Обычно это работает хорошо. Но когда имеешь дело с большим репо с некоторыми другими меньшими репо, оно будет зависать от большого репо.
Может кто-нибудь дать мне несколько советов, пожалуйста? Большое спасибо.