首页 > 解决方案 > 如何使多个“os.popen”进程同时启动(python 2.x)

问题描述

我在开发系统性能方面遇到了一些困难。

我使用 curl 和 os.popen 将我的服务器命令发送到某些网络设备。

但它似乎不是同时开始的,而是按顺序开始的。

是否有任何解决方案可以使 os.popen 进程同时启动?

提前致谢。


searchStr = request.POST.get('searchInput')


search_dev_dmz = str("curl --user id:pw -k -A ASDM https://someIP/admin/exec/show+access-list+'|'+inc+"+searchStr)
search_ccs1 = str("curl --user id:pw -k -A ASDM https://someIP/admin/exec/show+access-st+'|'+inc+"+searchStr)
search_ccs2 = str("curl --user id:pw -k -A ASDM https://someIP/admin/exec/show+access-list+'|'+inc+"+searchStr)

dev_dmz = str(os.popen(search_dev_dmz).read())
ccs1 = str(os.popen(search_ccs1).read())
ccs2 = str(os.popen(search_ccs2).read())

我预计这三个 popen 进程将同时启动,但它们似乎是按顺序启动的。

我想让它们同时启动,这样我就可以提高系统的性能。

标签: pythonpython-2.7curlpopen

解决方案


你需要多进程。我将举一个使用命令“ping”的示例,但它应该很容易适应您的代码。

from multiprocessing import Pool
import os


def f(x):
    return(str(os.popen(x).read()))

if __name__ == '__main__':


  alist= ["ping -c 10 google.com", "ping -c 10 microsoft.com", "ping -c 10 stackoverflow.com"]

  p = Pool(3)
  print(p.map(f, alist))

推荐阅读