import sys
import threading
import queue
q = queue.queue()
defworker1
(x, y):
func_name = sys._getframe().f_code.co_name
print
"%s run ..." % func_name
q.put((x + y, func_name))
defworker2
(x, y):
func_name = sys._getframe().f_code.co_name
print
"%s run ...." % func_name
q.put((x - y, func_name))
if __name__ == '__main__':
result = list()
t1 = threading.thread(target=worker1, name='thread1', args=(10, 5, ))
t2 = threading.thread(target=worker2, name='thread2', args=(20, 1, ))
print
'-' * 50
t1.start()
t2.start()
t1.join()
t2.join()
while
not q.empty():
for item in result:
if item[1] == worker1.__name__:
print
"%s 's return value is : %s" % (item[1], item[0])
elif item[1] == worker2.__name__:
print
"%s 's return value is : %s" % (item[1], item[0])
這是目前最主流的獲取執行緒資料的方法。使用 queue 庫建立佇列例項,用來儲存和傳遞執行緒間的資料。python 的佇列是執行緒安全的,也就是說多個執行緒同時訪問乙個佇列也不會有衝突。python 佇列有三種 fifo 先進先出,filo 先進後出(類似棧),優先順序佇列(由單獨的優先順序引數決定順序)。使用佇列可以實現簡單 生產者 – 消費者 模型 python獲得子執行緒的返回值
import sys import threading import queue q queue.queue def worker1 x,y func name sys.getframe f code.co name print s run func name q.put x y,func name...
如何獲得執行緒的返回值?
最近在學習多執行緒程式設計技術過程中,遇到乙個問題 如何獲取執行緒的返回值?執行緒定義之初 uint class thread lpvoid lpparam 開啟執行緒 cwinthread hthread afxbeginthread thread,lpparam,0,0,null 獲得執行緒返回...
ajax獲得後台的返回值
ajax success function msg ajax 是非同步執行的,資料還沒返回就執行下面的 了,所以 success 和error 都沒法準確的獲得一對一的返回值 最終只能是 object object error function msg complete function msg e...