【问题标题】:Create a thread using a class constructor as function使用类构造函数作为函数创建线程
【发布时间】:2015-05-23 19:55:28
【问题描述】:

我知道我可以使用以下语法在 Python 中创建和启动线程:

import threading

tracker_thread = threading.Thread(target=func, args=(x,y,z))
tracker_thread.daemon = True
tracker_thread.start()

我需要的是使用类构造函数作为target。我知道解决方案如下:

def wrap_function(x,y,z):
    MyClas(x,y,z)

tracker_thread = threading.Thread(target=wrap_function, args=(x,y,z))

但我试图通过在 Thread 的初始化中仅使用构造函数来避免使用类似的“包装函数”。

我该怎么做?

【问题讨论】:

  • threading.Thread(target=MyClass, args=(x, y, z)) 没用?
  • 是的,它有效...谢谢

标签: python multithreading class constructor


【解决方案1】:

解决了。最简单的解决方案总是最好的:

tracker_thread = threading.Thread(target=MyClass, args=(x,y,z))

感谢Sir_FZ 的评论。

【讨论】:

  • 是 args=[x, y, z] 还是 args=(x, y, z)?
  • 是的——Python“没有用于实例化对象的特殊语法”再次获胜!唯一一次函数/类交换让我把装饰器写成一个类,并用它来装饰 Python 3 中的方法。(提示:你的装饰器需要一个 __get__ 方法)
猜你喜欢
  • 1970-01-01
  • 2015-09-05
  • 2013-07-26
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多