10 多執行緒與queue

2021-08-28 06:01:22 字數 1425 閱讀 5864

1.queue類實現了乙個基本的先進先出(fifo)容器,使用put()將元素新增到序列尾端,get()從佇列頭部移除元素

2.與標準fifo實現queue不同的是,lifoqueue使用後進先出序(會關聯乙個棧資料結構)。最後put()到佇列的元素最先被get()

3.priorityqueue依據佇列中內容的排序順序(sort order)來決定那個元素將被檢索。

from queue import queue,lifoqueue,priorityqueue

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import queue

import threading

import time

thread_id = 1

thread_num = 3

class mythread(threading.thread):

def __init__(self, q):

global thread_id

threading.thread.__init__(self)

self.q = q

self.thread_id = thread_id

thread_id = thread_id + 1

def run(self):

while true:

try:

task = self.q.get(block = true, timeout = 1) #不設定阻塞的話會一直去嘗試獲取資源

except queue.empty:

print 'thread' , self.thread_id , 'end'

break

#取到資料,開始處理(依據需求加處理**)

print "starting " , self.thread_id

print task

self.q.task_done()

print "ending " , self.thread_id

q = queue.queue(10)

#向資源池裡面放10個數用作測試

for i in range(10):

q.put(i)

#開thread_num個執行緒

for i in range(0, thread_num):

worker = mythread(q)

worker.start()

q.join() #等待所有的佇列資源都用完

print "exiting main thread"

多執行緒queue

一 class queue.queue maxsize 0 佇列 先進先出 import queue q queue.queue q.put first q.put second q.put third print q.get print q.get print q.get 結果 先進先出 firs...

多執行緒之執行緒queue

有三種不同的用法 class queue.queue maxsize 0 佇列 先進先出 按 ctrl c 複製 按 ctrl c 複製 class queue.lifoqueue maxsize 0 堆疊 last in fisrt out import queue q queue.lifoque...

python 多執行緒 queue

python的queue設計的是執行緒安全的,所以大傢伙放心用吧!python多執行緒的一種簡單的實現如下 usr bin env python coding utf 8 import threading import time deffun argv print in argv time.slee...