线程 - 如何获取父进程ID/名称?
我想知道怎么从子线程获取父线程的ID或名字。举个例子,我有一个主线程叫做MainThread。在这个主线程里,我创建了几个新的子线程。然后我使用threading.enumerate()
来获取所有正在运行的线程的引用,接着我选择其中一个子线程,想办法获取MainThread的ID或名字。有没有什么办法可以做到这一点呢?
3 个回答
0
你可能想在创建子线程的时候,把主线程的名字传给它们。
另外一个选择是,如果你在使用一个类的话,可以让子线程的目标指向主线程类中的一个方法:
class MainThread:
name = "MainThreadName"
def child_thread_run(self):
print self.name # Will print "MainThreadName", even from a child thread
def run(self):
child = threading.Thread(target=self.child_thread_run)
child.start()
1
你可以在子线程中引用父线程,然后获取父线程的ID。
7
创建一个线程的子类,在初始化时设置一个 parent
属性:
from threading import current_thread
class MyThread(threading.Thread):
def __init__(self, *args, **kwargs):
self.parent = current_thread()
Thread.__init__(self, *args, **kwargs)
然后,在使用这个类启动的线程中工作时,我们可以通过 current_thread().parent
来获取创建这个线程的父线程对象。