获取线程变量的参数

时间:2015-06-15 17:09:56

标签: python multithreading arguments

我有一个非常简单的问题:

myThread = Thread(target=TestTarget, args=(1, Event(),))

是否可以使用变量myThread来获取参数?

谢谢!

3 个答案:

答案 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)

谢谢大家的帮助!