>  기사  >  백엔드 개발  >  Python 스레드 우선순위 대기열이란 무엇입니까? 스레드 우선순위를 설정하는 방법은 무엇입니까?

Python 스레드 우선순위 대기열이란 무엇입니까? 스레드 우선순위를 설정하는 방법은 무엇입니까?

乌拉乌拉~
乌拉乌拉~원래의
2018-08-21 19:44:263721검색

Python 프로그래밍 언어를 처음 접하는 사람들은 Python 프로그래밍을 처음 배우기 시작할 때 Python 스레드에 대해 거의 알지 못하는 사람들입니다. 이 기사에서는 Python스레드 우선순위 레벨과 Python 스레드에 대한 지식을 알아봅니다. 우선순위 설정 .

스레드 우선순위 큐(Queue)

Python의 Queue 모듈은 FIFO(선입선출) 큐 큐, LIFO(후입선출) 큐 LifoQueue 및 Priority queuePriorityQueue를 포함하여 스레드로부터 안전한 동기식 큐 클래스를 제공합니다. 이러한 대기열은 잠금 기본 형식을 구현하며 다중 스레드에서 직접 사용할 수 있습니다. 대기열을 사용하여 스레드 간 동기화를 달성할 수 있습니다.

큐 모듈에서 일반적으로 사용되는 메소드:

1.Queue.qsize()는 큐의 크기를 반환합니다.

2.Queue.empty() 큐가 비어 있으면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

3.Queue .full() 대기열이 가득 차면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

4.Queue.full은 최대 크기 크기에 해당합니다

5.Queue.get([block[, timeout]])은 대기열을 가져옵니다. , 시간 초과 대기 시간

6 .Queue.get_nowait()은 Queue.get(False)

7.Queue.put(item)이 대기열에 기록하고 시간 초과 대기 시간

8.Queue.put_nowait(item)과 동일합니다. Queue.put(item, False)

9.Queue.task_done()과 동일합니다. 작업을 완료한 후 Queue.task_done() 함수는 작업이 완료된 대기열에 신호를 보냅니다

10.Queue. Join()은 실제로 실행하기 전에 대기열이 빌 때까지 기다리는 것을 의미합니다. 다른 작업의 예

는 다음과 같습니다.

# !/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

위는 에 설명된 모든 내용입니다. 이번 글은 Python Thread Priority 관련 지식을 중심으로 소개하고 있으니, 위 내용을 이해하는데 참고하시기 바랍니다. 이 글에서 제가 설명한 내용이 여러분에게 도움이 되고 파이썬을 더 쉽게 배울 수 있기를 바랍니다.

더 많은 관련 지식을 알고 싶으시면 PHP 중국어 홈페이지의 Python tutorial 칼럼을 방문해 주세요.

위 내용은 Python 스레드 우선순위 대기열이란 무엇입니까? 스레드 우선순위를 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

관련 기사

더보기