【发布时间】:2017-07-14 14:24:06
【问题描述】:
我正在尝试创建一个脚本来克隆存储库,然后从本地存储库中删除写访问权限。我有一个存储 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 秒。
【问题讨论】:
-
您在每次循环迭代中创建进程,每个进程将仅在一个 repo 上工作。理想情况下,您希望委派一个小组来处理其中的一部分。下面的答案为您解决了这个问题,但没有解释它的作用。
标签: python multithreading subprocess