python 간단 한 스 레 드 와 협동 학습 소감(공유)
threading 라 이브 러 리 는 단독 스 레 드 에서 임의의 python 호출 대상 을 실행 할 수 있 습 니 다.비록 이 모듈 은 스 레 드 와 관련 된 작업 에 대한 지원 이 부족 하지만 우 리 는 간단 한 스 레 드 로 I/O 작업 을 처리 하여 프로그램 응답 시간 을 낮 출 수 있 습 니 다.
from threading import Thread
import time
def countdown(n):
while n > 0:
print('T-minus:', n)
n -= 1
t = Thread(target=countdown, args=(10,))
t.start() #
time.sleep(2)
if t.is_alive() is True:
print(" ...")
t._stop() #
start 함 수 는 스 레 드 를 여 는 데 사 용 됩 니 다.stop 함 수 는 스 레 드 를 멈 추 는 데 사 용 됩 니 다.스 레 드 에서 I/O 작업 을 할 때 차단 등 문 제 를 방지 하기 위해 일정 시간 실행 한 후에 스 레 드 가 살아 있 는 지 판단 할 수 있 습 니 다.스 레 드 가 존재 하면 호출stop()정지,차단 방지(당신 은stop 함수 가 클래스 에 봉 인 됩 니 다.저 는 이렇게 하지 않 았 습 니 다.물론 수 동 으로 스 레 드 를 만 드 는 것 이 아니 라 ThreadPool 스 레 드 풀 로 처리 할 수 있 습 니 다.스 레 드 간 에 변 수 를 공유 할 필요 가 없다 면 스 레 드 를 사용 하 는 것 이 편리 하고 많은 번 거 로 운 조작 과 시간 을 절약 할 수 있 습 니 다.만약 온라인 프로 세 스 간 의 통신 이 필요 하 다 면,우 리 는 대기 열 을 사용 하여 실현 할 수 있 습 니 다.
from queue import Queue
from threading import Thread
class kill:
def terminate(self, t):
if t.isAlive is True:
t._stop()
def product(out_q):
for i in range(5):
out_q.put(i)
def consumer(in_q):
for i in range(5):
print(in_q.get())
q = Queue()
t1 = Thread(target=consumer, args=(q,))
t2 = Thread(target=product, args=(q,))
t1.start()
t2.start()
k = kill() # , ...
k.terminate(t1)
k.terminate(t2)
Queue 인 스 턴 스 는 모든 스 레 드 에 공유 되 고 필요 한 자 물 쇠 를 모두 가지 고 있 기 때문에 여러 스 레 드 에서 안전하게 공유 할 수 있 습 니 다.다 중 스 레 드 에서 put(),get()방법 을 제외 한 quue 류 의 방법 을 사용 하지 않도록 주의해 야 합 니 다.다 중 스 레 드 환경 에서 이것 은 믿 을 수 없 기 때 문 입 니 다!간단 한 소형 스 레 드 에서 데이터 통신 은 대기 열 로 처리 할 수 있 습 니 다.만약 대형 데이터 가 상호작용 통신 이 필요 하 다 면 python 은 관련 모듈 을 제공 합 니 다.구체 적 인 u need baidu 를 사용 할 수 있 습 니 다.협 정 이란 단일 스 레 드 환경 에서 의 yield 프로그램 이다.
from collections import deque
def countdown(n):
while n > 0:
print("T-minus", n)
yield # ... C# yield return .
n -= 1
print("this is countdown!!!")
def countup(n):
x = 0
while x < n:
print("Counting up", x)
yield
x += 1
class TaskScheduler:
def __init__(self):
self._task_queue = deque()
def new_task(self, task):
self._task_queue.append(task)
def run(self):
while self._task_queue:
task = self._task_queue.popleft()
try:
next(task)
self._task_queue.append(task)
except StopIteration:
pass
sche = TaskScheduler()
sche.new_task(countdown(10))
sche.new_task(countdown(5))
sche.new_task(countup(15))
sche.run()
여기 서 자신 이 그 동안 python 을 사용 한 소감 을 말씀 드 리 겠 습 니 다.python 은 정말 좋 지만 성능 도 사람들의 비난 을 받 았 습 니 다.처음에 python 을 배 웠 을 때 저도 비교적 멋 진 프로그램 을 했 습 니 다.적어도 높 은 수준 으로 들 렸 습 니 다.예 를 들 어 python 의 자연 언어 처리 로 감정 분석 과 가장 뜨 거 운 파충류 프로그램,그리고 현란 한 데이터 분석 도 표를 만 들 었 습 니 다.점점 저 는 그런 것들 을 내 려 놓 았 습 니 다.프로그램의 중심 은 그런 것 이 아니 기 때문에 기본 적 인 문법 을 배우 고 공식 문 서 를 알 아 보면 할 수 있 습 니 다.그리고 프로그램 코드 의 중심 은 성능,최적화 에 있 습 니 다.최대한 의 쓰기 기능 이 가장 완선 하고 성능 이 가장 좋 으 며 구조 가 가장 아름 다운 프로그램 이다.사실은 이것 은 정치 선생님 이 흔히 말 하 는'문화 소프트 파워'와 같다.프로그램 중의'소프트 파워'는 프로그램 에 가장 적합 한 디자인 모델 을 삽입 하고 가장 완 비 된 절 차 를 최적화 시 키 며 가장 성능 을 절약 하 는 데이터 구 조 를 사용 해 야 한다.이상 의 python 간단 한 스 레 드 와 협 정 학습 소감(공유)은 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.