Für diejenigen, die zum ersten Mal mit der Programmiersprache Python in Berührung kommen, wissen sie zu Beginn des Erlernens der Python-Programmierung wenig über Python-Threads. In diesem Artikel werden wir etwas über Python
Das Warteschlangenmodul von Python bietet synchrone, threadsichere Warteschlangenklassen, einschließlich FIFO-Warteschlange (First In, First Out), LIFO ( (Last In First Out) Warteschlange LifoQueue und Prioritätswarteschlange PriorityQueue. Diese Warteschlangen implementieren Sperrprimitive und können direkt in Multithreads verwendet werden. Warteschlangen können verwendet werden, um eine Synchronisierung zwischen Threads zu erreichen.
Gemeinsame Methoden im Queue-Modul:
1.Queue.qsize() gibt die Größe der Warteschlange zurück
2. Queue.empty() Wenn die Warteschlange leer ist, geben Sie True zurück, andernfalls False
3.Queue.full() Wenn die Warteschlange voll ist, geben Sie True zurück, andernfalls False
4. Queue.full und Die maximale Größe entspricht
5.Queue.get([block[, timeout]]), um die Warteschlange abzurufen, Timeout-Wartezeit
6.Queue.get_nowait() entspricht Queue.get(False)
7.Queue.put(item) schreibt in die Warteschlange, Timeout-Wartezeit
8.Queue.put_nowait(item) entspricht Queue. put(item, False)
9 .Queue.task_done() Nach Abschluss eines Auftrags sendet die Funktion Queue.task_done() ein Signal an die Warteschlange, in der die Aufgabe abgeschlossen wurde
10 .Queue.join() bedeutet eigentlich Warten, bis die Warteschlange leer ist. Dann andere Vorgänge ausführen
Zum Beispiel:# !/usr/bin/python
# -*- coding: UTF-8 -*-
import Queue
import threading
import time
exitFlag = 0
class myThread(threading.Thread):
def __init__(self, threadID, name, q):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.q = q
def run(self):
print "Starting " + self.name
process_data(self.name, self.q)
print "Exiting " + self.name
def process_data(threadName, q):
while not exitFlag:
queueLock.acquire()
if not workQueue.empty():
data = q.get()
queueLock.release()
print "%s processing %s" % (threadName, data)
else:
queueLock.release()
time.sleep(1)
threadList = ["Thread-1", "Thread-2", "Thread-3"]
nameList = ["One", "Two", "Three", "Four", "Five"]
queueLock = threading.Lock()
workQueue = Queue.Queue(10)
threads = []
threadID = 1
# 创建新线程
for tName in threadList:
thread = myThread(threadID, tName, workQueue)
thread.start()
threads.append(thread)
threadID += 1
# 填充队列
queueLock.acquire()
for word in nameList:
workQueue.put(word)
queueLock.release()
# 等待队列清空
while not workQueue.empty():
pass
# 通知线程是时候退出
exitFlag = 1
# 等待所有线程完成
for t in threads:
t.join()
print "Exiting Main Thread"
Starting Thread-1 Starting Thread-2 Starting Thread-3 Thread-1 processing One Thread-2 processing Two Thread-3 processing Three Thread-1 processing Four Thread-2 processing Five Exiting Thread-3 Exiting Thread-1 Exiting Thread-2 Exiting Main Thread
Das Obige ist, was dieser Artikel beschreibt. In allen Inhalten stellt dieser Artikel hauptsächlich das relevante Wissen über die
Python-Thread-Prioritätvor. Ich hoffe, dass Sie die Informationen verwenden können, um den oben genannten Inhalt zu verstehen . Ich hoffe, dass das, was ich in diesem Artikel beschrieben habe, für Sie hilfreich ist und Ihnen das Erlernen von Python erleichtert. Weitere Informationen zu diesem Thema finden Sie in der Spalte
Python-Tutorialauf der chinesischen PHP-Website.
Das obige ist der detaillierte Inhalt vonWas ist die Python-Thread-Prioritätswarteschlange? Welche Methoden gibt es zum Festlegen der Thread-Priorität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!