我有一个非常简单的问题:
myThread = Thread(target=TestTarget, args=(1, Event(),))
是否可以使用变量myThread
来获取参数?
谢谢!
答案 0 :(得分:3)
_Thread__args
和_Thread__kwargs
存储构造函数的参数。
但是,正如您可能会用下划线所猜测的那样,这些不是公共API的一部分。实际上,“错位,重命名的属性”是intended to discourage direct access.
此外,这些属性特定于CPython实现。例如,Jython似乎没有通过这些名称公开这些属性(免责声明:我没有测试,只是只看了一眼源代码)。
在您的情况下,将参数以某种应用程序有意义的方式存储在Thread的子类中并访问它们可能会更好。
答案 1 :(得分:1)
您可以在_Thread__arg
对象上使用Thread
来获取传递给该Thread
对象的参数的详细信息。
import threading
def TestTarget(a, b):
pass
myThread = threading.Thread(target=TestTarget, args=(1, 2,))
print myThread._Thread__arg
>>> (1, 2)
答案 2 :(得分:0)
在pilcrows回答之后 - 我使用这个有效的解决方案:
from threading import Thread
class myThread(Thread):
args = None
def __init__(self, group=None, target=None, args=(), name=None, kwargs = None, daemon = None):
self.args = args
super(RaThread, self).__init__(group=group, target=target, args=args, name=name, kwargs=kwargs, daemon=daemon)
谢谢大家的帮助!