1

.NET アセンブリで定義されたイベントをサブスクライブする Python for .Net (2.7) スクリプトがあります。そのイベントが発生し、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 に表示されなかったのはなぜですか?

ありがとう。

4

1 に答える 1