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 중국어 웹사이트의 기타 관련 기사를 참조하세요!