【问题标题】:Parallel Python for loop并行 Python for 循环
【发布时间】:2017-12-08 22:52:44
【问题描述】:

我主要使用 Python 2.7 的 arcgis 和 pci 风格。我创建了许多在这些程序之外运行但使用这些库的进程。它们通过 .bat 文件通过 cmd 运行。

目前,他们在一系列 for 循环中运行流程。并且每个 for 循环都按顺序处理。我想知道是否有一种方法可以同时在 for 循环中为列表中的每个对象运行处理。那是并行的。我能想到的唯一方法是为列表中的每个对象打开一个 cmd,并分别运行处理。

我要问的可能吗?我应该在哪里寻找解决方案?

【问题讨论】:

  • 参考这个link希望它对人有帮助,祝你好运,我相信这是可能的......不是通过对列表中的每个对象进行cmd'ing...... Perl??
  • 这似乎与我的要求无关。我必须在 python 中完成。
  • 等一下,您是否尝试在 python 中调用外部命令,并且希望它们同时非顺序地计算?
  • 这似乎是我正在寻找的。非常感谢。
  • 嗯,您选择的答案不允许发生太多并发处理。但是,鉴于您的问题中完全没有代码,除了建议您查看multiprocessing 之外,我们无法为您提供更多信息。

标签: python python-2.7 gis


【解决方案1】:

查看Subprocess 因此,您希望在后台创建一个新的命令行窗口,其中 test.bat 并行运行。在您的情况下,您不想等待命令完成后再继续您的程序,所以请改用 subprocess.Popen (可能需要研究一下 好吧)

subprocess.call 

运行 args 描述的命令。等待命令完成,然后返回 returncode 属性。

如果你想从你的 python 脚本启动一个外部程序,将程序的文件名传递给 Ubuntu Linux 上的 subprocess.Popen() 你可以输入类似

>>>import subprocess 
>>>subprocess.Popen('/usr/bin/gnome-...')
<subprocess.Popen Object at 0x7f2bcf93b20

返回值是一个 Popen 对象,它有两个有用的方法:poll() 和 wait()

poll() 就像问你的朋友是否完成了你给他的代码的运行。 wait() 就像在你继续处理你的代码之前等待你的朋友完成他的代码。(你可能想要研究的东西)

【讨论】:

    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 2017-03-17
    • 2014-08-05
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多