获取线程变量的参数

问题描述 投票:0回答:4

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

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

是否可以仅使用变量

myThread
获取参数?

谢谢!

python multithreading arguments
4个回答
3
投票

_Thread__args
_Thread__kwargs
存储构造函数的参数。

但是,正如您可能通过下划线猜到的那样,这些不是公共 API 的一部分。 事实上,“损坏、重命名的属性”旨在阻止直接访问。

此外,这些属性特定于 CPython 实现。 例如,Jython 似乎没有通过这些名称公开这些属性(免责声明:我没有测试,只是浏览了源代码)。

在您的情况下,最好以某种对应用程序有意义的方式将参数存储在 Thread 的子类中,并访问它们。


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)

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)

谢谢大家的帮助!


0
投票

导入螺纹

def TestTarget(a, b): 通过

myThread = threading.Thread(target=TestTarget, args=(1, 2,))

(myThread.dict[“_args”])

arg1,arg2 = ((myThread.dict[“_args”]))

© www.soinside.com 2019 - 2024. All rights reserved.