PYTHON-使用类的多线程

我是python多线程的绝对初学者。我的应用程序需要远程登录200台服务器,执行命令并返回响应。我已经创建了用于远程登录和处理响应的单独的类。我了解了线程中的GIL和竞争条件,但不确定它们是否会对我的代码产生影响。因为我为每个线程创建类的新实例并访问该方法。因此从技术上讲线程不会共享相同的资源。谁能解释我的假设是否正确,否则请解释正确的做法?

主要方法:



if __name__ == "__main__":

    thread_list = []


    for ip in server_list: # server list contains the IP of hosts

         config_object = Configuration () # configuration class has method for telnet device
         thread1 = threading.Thread(target=config_object.captureconfigprocess,args=(ip))
         thread_list.append(thread1)

    for thread in thread_list:
        thread.start()

    for thread in thread_list:
        thread.join()


jining123456 回答:PYTHON-使用类的多线程

  

我了解了线程中的GIL和竞争条件,但不确定它们是否会对我的代码产生影响

Python没有真正的线程。操作系统会将所有python线程视为一个进程,这将需要CPU在python发送的指令之间进行上下文切换。这将削弱代码的性能。尽管在大多数情况下python线程已绰绰有余,但对于您的情况而言,它可能还是不够。 200台服务器可能看起来太多了,但这都归结为这200台服务器与python客户端之间发生了多少通信。可以肯定的是,您必须尝试一下。如果您想要更好的解决方案,请使用multiprocessing

  

因此从技术上讲线程不会共享相同的资源。

如果每个线程都在使用自己的资源,则不必担心共享资源。

本文链接:https://www.f2er.com/3097300.html

大家都在问