Pythonキューに関して疑問があります。
run()メソッドがキューを実行するスレッドクラスを作成しました。
import threading
import Queue
def AThread(threading.Thread):
def __init__(self,arg1):
self.file_resource=arg1
threading.Thread.__init__(self)
self.queue=Queue.Queue()
def __myTask(self):
self.file_resource.write()
''' Method that will access a common resource
Needs to be synchronized.
Returns a Boolean based on the outcome
'''
def run():
while True:
cmd=self.queue.get()
#cmd is actually a call to method
exec("self.__"+cmd)
self.queue.task_done()
#The problem i have here is while invoking the thread
a=AThread()
a.queue.put("myTask()")
print "Hai"
AThreadの同じインスタンス(a = AThread())は、異なる場所からキューにタスクをロードします。
したがって、下部のprintステートメントは、上記のステートメントを介してキューに追加されたタスクを待機し、最終的な期間を待機し、タスクの実行後に返された値も受け取る必要があります。
これを達成するための単純な方法はありますか?私はこれに関してたくさん検索しました、親切にこのコードを見直して、提案を提供してください。
そして、なぜpythonのacquireとreleaseロックがクラスのインスタンスにないのか。上記のシナリオでは、AThreadのインスタンスaとbを同期する必要はありませんが、取得ロックと解放ロックが適用されると、myTaskはaとbの両方のインスタンスに対して同期して実行されます。
親切に提案を提供してください。