オブジェクトのハンドルを使用して、スレッドのコンテキストからスレッド オブジェクトのメソッドの 1 つを呼び出そうとしています。ただし、これは機能せず、代わりにメソッドへの呼び出しがメイン スレッドのコンテキストから行われています。これを回避する方法はありますか?
コード例を次に示します。
import threading
class ThreadTest(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
print '\nInitializing ThreadTest\n'
def call_me(self):
ident = threading.current_thread().ident
print '\nI was called from thread ' + str(ident) + '\n'
def run(self):
ident = threading.current_thread().ident
print '\nStarting thread ' + str(ident) + ' for ThreadTest\n'
self.call_me()
ident = threading.current_thread().ident
print '\nMain thread ID is ' + str(ident) + '\n'
tt = ThreadTest()
tt.start()
tt.call_me()
# Example Output:
# Main thread ID is 140735128459616
#
# Initializing ThreadTest
#
# Starting thread 4400537600 for ThreadTest
#
# I was called from thread 4400537600
#
# I was called from thread 140735128459616
私が探しているのは、スレッドの run メソッドから呼び出されたときと同じ IDtt.call_me()
を返すように、スレッドのコンテキストから作成する方法です。current_thread().ident
何か案は?