我有一个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,started 8920)>}
如何判断给定的Python行正在执行什么线程?
更新: 好的,我找到了threading.current_thread()。在我的处理程序之外它返回:
< _MainThread(MainThread,7064开始)>
在我的处理程序中,它返回
< _DummyThread(Dummy-1,启动后台程序7916)>
“DummyThread”是一个工作线程吗?为什么它没有出现在threading._active?
感谢。
答案 0 :(得分:1)
DummyThreads是工作线程并显示在此调用中:
threading.enumerate()
所以,是的,事件处理程序正在工作线程中执行。