Python中的线程启动钩子

2024-05-15 09:42:27 发布

您现在位置:Python中文网/ 问答频道 /正文

当一个新线程在Python(2.7)中启动时,有没有一种方法可以运行任意方法?我的目标是使用setproctitle为每个生成的线程设置适当的标题。在


Tags: 方法标题目标线程setproctitle
2条回答

只是继承自线程。线程并且使用这个类而不是Thread-只要你能控制线程。在

import threading

class MyThread(threading.Thread):
    def __init__(self, callable, *args, **kwargs):
        super(MyThread, self).__init__(*args, **kwargs)
        self._call_on_start = callable
    def start(self):
        self._call_on_start()
        super(MyThread, self).start()

就像一幅粗糙的素描。在

编辑 从现有的应用程序中注入新的“评论”的需要。假设您有一个脚本,它本身导入其他库。这些库使用threading模块:

在导入任何其他模块之前,首先执行此操作

^{pr2}$

由于后续导入只在sys.modules中进行查找,所有其他使用此功能的库现在都应该使用我们的新类。我认为这是一次黑客攻击,可能会有奇怪的副作用。但至少值得一试。在

请注意:threading.Thread不是在python中实现并发的唯一方法,还有其他选项,如multiprocessing等。。这些在这里不受影响。在

编辑2 我刚刚看了一下你引用的库,它是关于进程的,而不是线程!所以,只要做一个:%s/threading/multiprocessing/g:%s/Thread/Process/g就可以了。在

使用threading.setprofile。你给它一个回调函数,Python会在每次新线程启动时调用它。在

文档here。在

相关问题 更多 >