multiprocess.Pool зависает - PullRequest
       2

multiprocess.Pool зависает

1 голос
/ 16 января 2020

Я использую 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

Обычно это работает хорошо. Но когда имеешь дело с большим репо с некоторыми другими меньшими репо, оно будет зависать от большого репо. enter image description here

Может кто-нибудь дать мне несколько советов, пожалуйста? Большое спасибо.

...