如何在函数中为函数运行多线程-Python

时间:2019-06-06 20:09:00

标签: python networking network-programming python-multithreading

Python初学者!

nil?

输出:

连接成功

线程已完成...正在退出

连接成功

线程已完成...正在退出

问题:不读取第二个函数command(),是否需要调用第一个函数中的第二个函数?

2 个答案:

答案 0 :(得分:0)

正在阅读command()并构建函数。定义它后,您永远不会再使用此函数。我建议您review functions in python

您的代码需要进行调整:

def conn(device):
    connect = ConnectHandler(device_type='cisco_ios', 
                             username='kiran', ip=device, password='ciscossh',secret='ciscoen')
    print 'connection successful'
    def commmand():
        value = connect.send('sh int ip brief')
        print value
    command() # call your function!!! otherwise it is useless...

答案 1 :(得分:0)

我应该尝试澄清一些对您有帮助的观点。

-即使您正在定义command()方法,它也不会被显式调用,因此肯定不应该打印出答案。

-您的线程现在的工作方式是非常同步的。当您使用join()时,它将阻塞线程的执行,直到完成为止,并且由于没有同时初始化其他线程,因此代码执行仍然很简单。如果符合您的兴趣,则可以考虑启动所有线程,然后在 for 循环之后加入它们。

-网络连接有时需要独立的核心资源,并且具有单独的处理器或内存要求。在这种情况下,您可能想探索Python的 multiprocessing 模块,而不是 threading

-如果您有兴趣启动多个线程|进程,每个线程每个迭代( for 循环),您可能需要考虑使用Pool对象,从而在一个数据结构中为您提供多个线程。

希望这会有所帮助。