Python的执行问题”同期期货“线程

2024-10-03 09:18:57 发布

您现在位置:Python中文网/ 问答频道 /正文

简而言之,我编写了一个Python脚本,尝试建立到大约600个网络设备的SSH连接(使用Paramiko模块),然后发出一个简单的命令,解析并返回输出。在

我在没有线程的情况下运行了我的脚本,它按预期工作,因此我知道我的问题在于线程方面(或我对它的理解)。我以前唯一的线程经验是在C。。。在

以下是我对未来的运用:

with futures.ThreadPoolExecutor(max_workers=10) as executor:
    for x in nodeList:
        futureSSH = {executor.submit(connectHost,node): node for node in x.nodes}
        for future in futures.as_completed(futureSSH):
            print future.running()
            successes.append(futureSSH[future])
            counter +=1
            print counter

下面是尝试SSH连接的函数:

^{pr2}$

现在这一切都很完美。除了在第153次迭代中,我的脚本似乎冻结了,只在大约10分钟后恢复。在剩下的执行过程中,这会断断续续地重复。在

让我困惑的是,我最多有10个活动线程尝试SSH连接,最多10次,每次尝试超时10秒。所以我的理解是,在最坏的情况下,一个线程将空闲100秒直到退出。。。既然不是这样,它是否与线程挂起或锁定有关?在


Tags: in脚本nodeforascounter情况future