我需要连接到多台机器并对它们执行一组命令。我想用线程来实现它,但不知道如何实现这一点。 以下是代码:
import threading
def conn_to_board(board_ip):
# ssh connection to machine
# set of commands
board_ip = ["1.1.1.1", "2.2.2.2", "3.3.3.3", "4.4.4.4"]
'''
for i in board_ip:
t1 = threading.Thread(target=conn_to_board, args=(i,))
t1.start()
t1.join()
'''
有人可以通过线程来帮助我实现这一目标吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
假设函数conn_to_board(board_ip)
已经执行了您想要的操作并且没有绑定相同的本地端口或者使用资源,则多线程很简单且您的代码几乎是正确的。我在注释代码中看到的唯一问题是你加入了循环中的每个线程,实际上是一个接一个地序列化它们 - 换句话说多线程在这里完全没用。
首先应创建并启动所有线程(如果数量足够低),然后将它们连接到一个新循环中:
...
thrs = [] # to store the threads
for i in board_ip: # create and start the threads
t1 = threading.Thread(target=conn_to_board, args=(i,))
t1.start()
thrs.append(t1)
for t1 in thrs: # join all the threads
t1.join()