Was ist die Python-Thread-Prioritätswarteschlange? Welche Methoden gibt es zum Festlegen der Thread-Priorität?

乌拉乌拉~
Freigeben: 2018-08-21 19:44:26
Original
3724 Leute haben es durchsucht

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 Thread-Priorität und PythonThread-Prioritätseinstellung.

Thread-Prioritätswarteschlange (Queue)

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"
Nach dem Login kopieren
Das Ausgabeergebnis des obigen Beispiels ist wie folgt folgt:

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
Nach dem Login kopieren

Das Obige ist, was dieser Artikel beschreibt. In allen Inhalten stellt dieser Artikel hauptsächlich das relevante Wissen über die

Python-Thread-Priorität

vor. 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-Tutorial

auf 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage