我正在尝试创建一个克隆存储库的脚本,然后从本地存储库中删除写访问权限。我有一个存储repo对象的列表,我遍历此列表以克隆并锁定repo。
我尝试使用multiprocessing
来加快这项任务,但似乎实际上已经放慢了速度......
def install():
os.chdir(ROOT_DIR)
if os.path.isdir("./repos"):
for repo in getRepos():
os.chdir(ROOT_DIR)
#Process(target=repo.clone()).start()
#Process(target=lock, args=(repo,)).start()
repo.clone()
lock(repo)
else:
os.mkdir("./repos")
install()
两条注释行是我尝试创建的子过程。我使用这个错了吗?
通过子处理,我的平均执行时间为:5.8秒 如果没有子处理,我的平均执行时间为:4.5秒。
答案 0 :(得分:2)
尝试类似:
from multiprocessing import Pool
def processRepo(repo):
repo.clone()
lock(repo)
def install():
os.chdir(ROOT_DIR)
if os.path.isdir("./repos"):
pool = Pool()
pool.map(processRepo, getRepos())
pool.close()
pool.join()
else:
os.mkdir("./repos")
install()