我想同步我所有的vcs目录并行。我将使用目录并运行特殊的命令行脚本来同步git或mercurial存储库。这是一个缓慢的过程,所以我想让它平行。在
但是我的并行线程为“当前目录”而斗争有麻烦,所以我需要一些技巧来同时在不同的目录中工作。在
当前解决方案:
def syncrepos(repos):
for r in repos.split("\n"):
if r:
print("------ repository: ", r)
thrd = ThreadingSync(r)
thrd.setDaemon(True)
thrd.start()
ThreadingSync在哪里
^{pr2}$并且gitSync
是
def gitSync():
pretty(cmd("git pull origin master"))
pretty(cmd("git fetch upstream master"))
pretty(cmd("git pull --rebase upstream master"))
pretty(cmd("git push -f origin master"))
当然,这不是完美的,但它做我的工作,我想加快它。在
如何为每个存储库/目录生成一个子进程(Thrad safe实现os.chdir公司) ? 在
创建一个工作线程池以运行子例程:
http://docs.python.org/2/library/multiprocessing.html#using-a-pool-of-workers
在你的情况下,可能是:
请注意,池可能会使调试变得有点困难,因为父节点通常不会显示太多信息(我的一个孩子死了),所以先让它单线程工作。在
编辑: 好吧,这很有趣-注意Pool
^{pr2}$maxtasksperchild=1
的新参数。进程在两次调用之间不是rebooted
,因此当您在一次调用中更改目录时,当该进程得到重用时,您仍然在该目录中。在这里,我只需告诉池在每次调用后终止进程就可以解决这个问题。在相关问题 更多 >
编程相关推荐