我對編碼/腳本編程有點新,並且需要一些幫助來實現多處理。使用python多處理器登錄路由器
我目前有兩個功能,我將集中在這裏。第一個,def getting_routes(router):
登錄到我所有的路由器(路由器列表來自前一個功能)並運行命令。第二個函數def parse_paths(routes):解析這個命令的結果。
def get_list_of_routers
<some code>
return routers
def getting_routes(router):
routes = sh.ssh(router, "show ip route")
return routes
def parse_paths(routes):
l = routes.split("\n")
...... <more code>.....
return parsed_list
我的列表是大約50路由器長,隨後沿解析,需要相當長的時間,所以我想用多模塊運行ssh方式連接到路由器,命令執行,並隨後在解析並行於所有路由器。 我寫道:
#!/usr/bin/env python
import multiprocessing.dummy import Pool as ThreadPool
def get_list_of_routers (***this part does not need to be threaded)
<some code>
return routers
def getting_routes(router):
routes = sh.ssh(router, "show ip route")
return routes
def parse_paths(routes):
l = routes.split("\n")
...... <more code>.....
return parsed_list
if __name__ == '__main__':
worker_1 = multiprocessing.Process(target=getting_routes)
worker_2 = multiprocessing.Process(target=parse_paths)
worker_1.start()
worker_2.start()
我想什麼是平行ssh方式連接到路由器,運行命令,並返回解析輸出。我一直在閱讀http://kmdouglass.github.io/posts/learning-pythons-multiprocessing-module.html和多處理模塊,但我仍然沒有得到我需要的結果,並一直得到未定義的錯誤。對於我可能在多處理模塊中缺少的任何幫助?提前致謝!