Maison  >  Article  >  développement back-end  >  Quelle est la file d’attente prioritaire du thread Python ? Quelles sont les méthodes pour définir la priorité des threads ?

Quelle est la file d’attente prioritaire du thread Python ? Quelles sont les méthodes pour définir la priorité des threads ?

乌拉乌拉~
乌拉乌拉~original
2018-08-21 19:44:263721parcourir

Pour ceux qui sont exposés au langage de programmation Python pour la première fois, ils connaissent peu les threads Python lorsqu'ils ont commencé à apprendre la programmation Python. Dans cet article, nous en apprendrons davantage sur Pythonpriorité des threads et pythonparamètre de priorité des threads.

File d'attente à priorité de thread (Queue)

Le module Queue de Python fournit des classes de file d'attente synchrones et sécurisées pour les threads, y compris la file d'attente FIFO (premier entré, premier sorti), LIFO ( dernier entré, premier sorti), la file d'attente LifoQueue et la file d'attente prioritaire PriorityQueue. Ces files d'attente implémentent des primitives de verrouillage et peuvent être utilisées directement en multi-threads. Les files d'attente peuvent être utilisées pour réaliser la synchronisation entre les threads.

Méthodes courantes dans le module Queue :

1.Queue.qsize() renvoie la taille de la file d'attente

2. Queue.empty() Si la file d'attente est vide, renvoie True, sinon False

3.Queue.full() Si la file d'attente est pleine, renvoie True, sinon False

4. Queue.full et la taille maxsize correspondent à

5.Queue.get([block[, timeout]]) pour obtenir la file d'attente, délai d'attente

6.Queue.get_nowait() est équivalent à Queue.get(False)

7.Queue.put(item) écrit dans la file d'attente, délai d'attente

8.Queue.put_nowait(item) est équivalent à Queue. put(item, False)

9 .Queue.task_done() Après avoir terminé un travail, la fonction Queue.task_done() envoie un signal à la file d'attente où la tâche a été terminée

10 .Queue.join() signifie en fait attendre que la file d'attente soit vide, puis effectuer d'autres opérations

Par exemple :

Le résultat de sortie de l'exemple ci-dessus est la suivante :
# !/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"

C'est tout pour cet article. Pour tout le contenu décrit dans l'article, cet article présente principalement les connaissances pertinentes de
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
Priorité des threads Python

. les informations pour comprendre le contenu ci-dessus. J'espère que ce que j'ai décrit dans cet article vous sera utile et vous facilitera l'apprentissage de Python. Pour plus de connaissances connexes, veuillez visiter la colonne

Tutoriel Python

du site Web php chinois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn