要将参数传递给线程并返回值,下面的代码是否正确?

时间:2016-01-04 15:35:00

标签: django python-2.7

这是线程:我尝试将参数添加到 init 函数以将参数传递给线程

class lookThread(threading.Thread):
data = []   
def __init__(self,userid):
    self.userid=userid
    threading.Thread.__init__(self)
def run(self):
    lock=threading.lock()
    #lock
    lock.acquire()
    m=User.objects.get(userID=self.userid)
    userlist=[]
    userlist.append(m.userID)
    userlist.append(m.realName)
    userlist.append("")
    userlist.append(m.IDNumber)
    userlist.append(m.telNumber)

    lookThread.data= userlist
    #unlock
    lock.release()

这是调用线程的函数。线程执行后,我想得到用户列表的值

def lookuserinfo(userid):
  new_thread=lookThread(userid)
  new_thread.start()
  resp = lookThread.data
  return resp

1 个答案:

答案 0 :(得分:0)

此方法可以将参数传递给线程,但不能返回变量'userlist'。我们可以使用数据结构Queue来获取'userlist'值。首先,在函数lookuserinfo()中初始化'queue = Queue.Queue()',将'queue'作为参数传递给线程,然后在线程中使用'self.queue.put(userlist)',最后使用'queue。函数中的get()'。而且,Queue是线程安全的。