**描述:
#1). 理論上多執行緒執行任務是不能獲取返回結果的, 因此需要乙個容器來儲存產生的資料;
2). 容器該如何選擇? list(棧, 佇列), tuple(元組是不可變的, 不可使用),
set(集合缺省會去重, 所以不選擇), dict
選擇佇列型別儲存(fifo===first input first output)
import threading
from mytimeit import timeit
from queue import queue
def job(li, queue):
queue.put(sum(li)) # 將任務的執行結果儲存到佇列中;
@timeit
def use_thread():
# 例項化乙個佇列, 用來儲存每個執行緒執行的結果
q = queue()
# q.get() -- 出隊
# q.put(value) -- 入隊
lis = [range(5), range(2,10), range(1000, 20000), range(3000, 10000)]
# create 5 threads
threads =
for li in lis:
t = threading.thread(target=job, args=(li, q))
t.start()
[thread.join() for thread in threads]
# 從佇列中拿出所有執行緒執行的結果;
results = [q.get() for li in lis]
print(results)
if __name__ == "__main__":
use_thread()
Python中的多執行緒與佇列
0x01 執行緒鎖 既然說到多執行緒,就會經常遇到多個執行緒共同操作乙個單元或空間的情況,對該單元進行修改 獲取等操作,為了避免各執行緒間的混亂操作,保證執行緒同步的正確性,很有必要引入執行緒鎖的概念。執行緒鎖,顧名思義,表示某一單元或空間只為某一線程所有,此時其他執行緒均無法進行操作,等待該執行緒...
python 執行緒佇列
1.先進先出 bin python encoding utf8 import queue 執行緒佇列 q queue.queue 模式 1.先進先出,2,後進先出,3.優先順序 q queue.queue 5 5 表示可以放5個資料 q.put 12 q.put hell q.put while 1...
python 執行緒佇列
佇列是一種資料結構,是資料安全的,資料安全的。佇列能幹的事情列表都能幹。列表是執行緒不安全的,所以可以說佇列是針對多執行緒出現的。資料結構是用來儲存資料用的,只不過各種資料結構的儲存方式不同。比如 集合 佇列 對映 列表 按索引值儲存 字典 按key值的雜湊表儲存 list.pop 按索引刪除 li...