【问题标题】:What is the difference between threading function and normal function. Does it differ in memory allocation or execution?线程函数和普通函数有什么区别。它在内存分配或执行方面有什么不同吗?
【发布时间】:2020-03-13 07:26:05
【问题描述】:

假设我有一个函数句柄客户端 def Handle_Client(): print('你好 StackOverFlow 用户')

一种使用线程调用函数handel客户端的方法 Client_Thread=Thread(target=Handle_Client,args=())

Client_Thread.start()

第二种方式 Client_Thread=Handle_Client()

在内存、执行方面的差异是什么?还是一样?

【问题讨论】:

    标签: python-3.x sockets networking operating-system


    【解决方案1】:

    在执行方面,

    你提到的第一种方式

    Client_Thread=Thread(target=Handle_Client,args=(1,))
    Client_Thread.start()
    

    当你创建一个线程时,你传递给它一个函数和一个包含该函数参数的列表。在这种情况下,您是在告诉线程运行 Handle_Client() 并将其作为参数传递 1。

    您提到的第二种方法是通过创建一个类来完成。比如

    class Handle_Client(threading.Thread):
      def __init__(self, i):
      threading.Thread.__init__(self)
    self.h = i
    def run(self):
      print(“ Value send“, self.h)
    Client_Thread = Handle_Client(1)
    Client_Thread.start()
    
    

    这里,新类Handle_Client继承了Python threading.Thread class.

    __init__(self [,args]): 重写构造函数。

    run():这是您可以放置​​逻辑部分的部分。

    start(): start() 方法启动一个 Python 线程。

    Handle_Client 类重写了构造函数,因此必须调用基类构造函数(Thread.__init__())。

    在内存方面,

    在第一种方法中,您将函数作为单独的线程运行,而在第二种方法中,您必须创建一个类,但要获得更多功能。 这意味着它将需要额外的内存,因为您可以获得更多功能。 我不是100%肯定,但这就是我所理解的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2016-11-26
      • 2019-05-24
      相关资源
      最近更新 更多