当前位置: 首页 > 知识库问答 >
问题:

使python for循环并行运行

龙令
2023-03-14

我有一个python for循环,它执行一个bash脚本,如下所示(我将其简化为只包含需要显示的内容),我需要它在for循环中同时运行所有这些bash脚本,但要等到它们全部完成后才能继续串联。bash脚本是我唯一希望并行运行的部分。它是在同一for循环的下游做一些需要串联完成的事情。这可能吗?

以下是系列作品。没有脚本的并行执行,因为。如果我删除. etc(),它几乎立即出错,下游的任何东西都不再像预期的那样运行。

for i in range(0, len(10)):

    path = 'folder_'+'%02d'%i
    os.mkdir(path)
    os.chdir(path)

    command = 'bash dosomething'
    subprocess.Popen(command, shell=True).wait()

    THINGS IN SERIES

    os.chdir('../')

共有2个答案

尉迟远
2023-03-14
import Parallel, delayed
import multiprocessing

counts = range(10) 
def sub_command(i):
    path = 'folder_'+'%02d'%i
    os.mkdir(path)
    os.chdir(path)

    command = 'bash dosomething'    
    subprocess.Popen(command, shell=True).wait()
    os.chdir("../")

cpu_cores = multiprocessing.cpu_count()

Parallel(n_jobs=cpu_cores)(delayed(sub_command)(i) for i in counts )
端木兴国
2023-03-14

启动所有子流程后执行等待。为子目录设置当前工作目录,而不是更改父目录中的当前工作目录。

processes = []
for i in range(0, len(10)):
    path = 'folder_'+'%02d'%i
    os.mkdir(path)
    command = ('bash dosomething')
    processes.append(subprocess.Popen(command, shell=True,
        cwd=path))

# you can do other things here

for p in processes:
    p.wait()
 类似资料:
  • 我想在一个并行外部循环中运行一个包含for循环(应该并行运行)的函数。因此看起来如下所示: 给定上面的代码,我希望在函数中为循环创建5个并行线程,并且希望这5个线程中的每个线程创建另一个线程来运行自己的并行for循环。

  • 问题内容: 我听说Java 8提供了许多有关并发计算的实用程序。因此,我想知道并行化给定for循环的最简单方法是什么? 问题答案: 在流上阅读,它们都是新的流行。 特别注意并行性: “具有显式for循环的处理元素本质上是串行的。流通过将计算重新格式化为聚合操作的流水线,而不是作为对每个单独元素的命令性操作来促进并行执行。所有流操作都可以串行或并行执行。 ” 综上所述,没有并行的for循环,它们本质

  • 我听说Java8提供了很多关于并发计算的实用程序。因此,我想知道并行给定for循环的最简单方法是什么?

  • 我需要12次外循环,每个外循环1次内循环 例如: 等 但现在我的内循环在第一次迭代的外循环上运行。 请帮助我如何使用for循环执行此操作。

  • 英文原文:http://emberjs.com/guides/understanding-ember/run-loop/ Ember内部及大部分为应用编写的代码都在一个运行循环中执行。运行循环用来做批量处理,并将任务以一种最高效的方式来执行。 运行循环通过将工作分配到特定的队列来完成任务。队列具有优先级,并严格按照优先级来执行。 为什么这样有用? 通常批处理相似的工作都能得到好处。Web浏览器也实

  • 我需要修改下面的代码,以使用循环与常规foreach循环。 我遇到的问题是将对象传递给foreach循环。我刚开始使用循环-有没有人对此有一些信息? 当前代码 问题是列表将包含3000+项,循环将循环每一项,我需要并行地运行它们。 因此,我想使用函数,但我无法通过传递对象来使其工作。