我有一个 Python for .Net (2.7) 脚本,它订阅了在 .NET 程序集中定义的事件。当该事件触发并调用基于 python 的事件处理程序时,我的处理程序是在 Python 的主线程还是在工作线程中执行?
...
def MyEventHandler(source, args):
print 'Received message: ' + args.Message
...
dotNetObject.SomeEvent += MyEventHandler
...
我认为它一定是一个工作线程,但是当我将这行代码放入处理程序时:
print threading._active
它只报告了主线程:
{8920: <_MainThread(MainThread, 开始 8920)>}
如何判断给定的 Python 行在哪个线程中执行?
更新:好的,我找到了 threading.current_thread()。在我的处理程序之外它返回:
<_MainThread(MainThread, 开始 7064)>
在我的处理程序中它返回
<_DummyThread(Dummy-1, 启动守护进程 7916)>
那么“DummyThread”是工作线程吗?为什么它没有出现在 threading._active 中?
谢谢。