我对 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的获取和释放锁不在类的实例上。在提到的场景中,AThread 的实例 a 和 b 不需要同步,但是当应用获取和释放锁时,myTask 会为 a 和 b 的两个实例同步运行。
请提供建议。