python - 如何使多个“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 进程将同时启动,但它们似乎是按顺序启动的。
我想让它们同时启动,这样我就可以提高系统的性能。
解决方案
你需要多进程。我将举一个使用命令“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))
推荐阅读
- java - Java EE 8 教程 - Maven 原型不存在
- amazon-web-services - Amazon S3 似乎没有触发 Lambda 函数
- python - “导入” SQLiteDatabaseBrowserPortable 应用程序模块的脚本语法是什么?
- machine-learning - “要进行任何分类或回归,我们需要全连接层作为输出层”
- sql - 使用 SQL 连接多个表
- javascript - React 从常量导入图像路径
- apply - 将带有 t(apply()) 的 for 循环从 R 转换为 C++ 以与 Rcpp 一起使用
- r - 如何将 R 脚本传递给 R Shiny
- ios - 替换 Apple 弃用的 UIApplicationDidChangeStatusBarFrameNotification API
- c++ - 如何在 QThread 和 QGui 之间传递参数?