同时运行多个for循环会话python

时间:2017-12-07 15:41:24

标签: python multithreading

我有一份输入清单 serverfarm ='''
server1 = 10.1
server2 = 10.2
server3 = 10.3
server4 = 10.4
server5 = 10.5
server6 = 10.6
server7 = 10.7
server8 = 10.8
server9 = 10.9
server10 = 10.10
server11 = 10.11
server12 = 10.12
server13 = 10.13
server14 = 10.14
server15 = 10.15
server16 = 10.16
server17 = 10.17
server18 = 10.18
server19 = 10.19
server20 = 10.20
''' 我为每个服务器运行一个for循环:

for server in serverfarm:<br>
.   ssh each server and do config # its take 5 min to complete a server. 

完成列表的总时间为100分钟。我需要减少这个时间。我需要同时运行多个for循环。即,在这种情况下,for循环一次运行5或10个服务器。

让我们考虑10,在这种情况下,脚本只需10分钟即可完成每台服务器上的配置。我不担心我的脚本服务器上的资源。只需要不惜一切代价减少时间。

或者,如果有任何方法可以运行一个主脚本,该脚本在后端复制for循环并更新在10分钟内返回值的主脚本。

1 个答案:

答案 0 :(得分:0)

你可以创建一个为单个服务器执行ssh和config部分的函数,并以SyntaxError: missing } after property list 运行它,就像这样:

multiprocessing.Process

有关from multiprocession import Process def configure_server(server): # Do your ssh and config stuff here # List of processes proc = [] # iterate your servers for server in serverfarm: p = Process(target=configure_server, args=(server,)) p.start() proc.append(p) # Block main thread until all processes are finished for p in proc: p.join() 或其他多处理相关内容的详细信息,请查看Python Documentation