我如何能够并行化一个' for'循环与外部变量?

时间:2014-05-30 17:19:06

标签: python python-2.7 parallel-processing pywikibot

我难以并行化new_text类型为unicode的代码部分:

for old, new in self.replacements:
    line = pywikibot.replaceExcept(
        line, old, new, self.excsInside, self.site)
if new_text != entry.text:
    yield pywikibot.Page(self.site, entry.title)

使用joblibprocess-pool可以轻松完成任务,但在循环外部使用new_text。我不知道相当于#pragama omp ordered#pragma omp atomic,因为Python没有OpenMP包装...

如果new_next与if语句并行运行,我如何确定它的值是什么?

1 个答案:

答案 0 :(得分:0)

由于它本质上是顺序的,因此您可以按行并行化:

for line in new_text
    for old, new in self.replacements:
        line = pywikibot.replaceExcept(
            line, old, new, self.excsInside, self.site)

你并行外部for循环(映射每个替换,然后通过连接减少)。