python 다 중 스 레 드 결합 영웅 연맹 피부(원리 분석)

1.다 중 스 레 드 가 무엇 입 니까?
다 중 스 레 드 는 여러 가지 임 무 를 동시에 완성 하기 위해 서 이지 운영 효율 을 높이 기 위해 서가 아니 라 자원 의 사용 효율 을 향상 시 켜 시스템 의 효율 을 높이 기 위해 서 이다.스 레 드 는 같은 시간 에 여러 가지 임 무 를 완성 해 야 할 때 이 루어 진다.
다 중 스 레 드 를 왜 사용 합 니까?
스 레 드 는 프로그램 에서 독립 적 이 고 동시 다발 적 인 실행 흐름 이다.분 리 된 프로 세 스 에 비해 프로 세 스 의 스 레 드 간 격 리 정 도 는 작 습 니 다.메모리,파일 핸들,다른 프로 세 스 의 상 태 를 공유 합 니 다.
스 레 드 의 구분 기준 이 프로 세 스 보다 작 기 때문에 다 중 스 레 드 프로그램의 병행 성 이 높다.프로 세 스 는 실행 과정 에서 독립 된 메모리 셀 을 가지 고 있 으 며,여러 스 레 드 는 메모 리 를 공유 하여 프로그램의 운행 효율 을 크게 향상 시 켰 다.
프로 세 스 보다 스 레 드 가 더 높 은 성능 을 가지 고 있 습 니 다.이 는 같은 프로 세 스 의 스 레 드 가 같은 프로 세 스 의 가상 공간 을 공유 하기 때 문 입 니 다.스 레 드 공유 환경 은 프로 세 스 코드 세그먼트,프로 세 스 의 공유 데이터 등 을 포함 하고 공 유 된 데 이 터 를 이용 하여 스 레 드 간 에 통신 이 쉽게 이 루어 집 니 다.
운영 체 제 는 프로 세 스 를 만 들 때 이 프로 세 스 에 독립 된 메모리 공간 을 할당 하고 관련 자원 을 대량으로 분배 해 야 하지만 스 레 드 를 만 드 는 것 은 훨씬 간단 합 니 다.따라서 다 중 프로 세 스 를 사용 하 는 것 보다 다 중 스 레 드 를 사용 하 는 것 이 훨씬 높다.
요약 하면 다 중 스 레 드 프로 그래 밍 을 사용 하 는 것 은 다음 과 같은 몇 가지 장점 을 가진다.
프로 세 스 간 에 메모 리 를 공유 할 수 는 없 지만 스 레 드 간 에 메모 리 를 공유 하 는 것 은 매우 쉽다.
운영 체제 가 프로 세 스 를 만 들 때 이 프로 세 스 를 위해 시스템 자원 을 재배 치 해 야 하지만 스 레 드 를 만 드 는 대 가 는 훨씬 적다.따라서 다 중 스 레 드 를 사용 하여 다 중 작업 을 수행 하 는 것 이 다 중 프로 세 스 를 사용 하 는 것 보다 효율 적 입 니 다.
Python 언어 는 단순히 바 텀 운영 체제 로 서 의 스케줄 링 방식 이 아니 라 다 중 스 레 드 기능 지원 을 내장 하여 Python 의 다 중 스 레 드 프로 그래 밍 을 간소화 하 였 습 니 다.
2.원리
다 중 스 레 드 를 실현 하 는 것 은 병행 집행 체 제 를 채택 하 는 것 이다.
동시 실행 메커니즘 원리:쉽게 말 하면 하나의 프로 세 서 를 몇 개의 짧 은 시간 편 으로 나 누 어 각 시간 편 마다 차례대로 돌아 가면 서 각 응용 프로그램 을 처리 하 는 것 이다.한 시간 편 이 매우 짧 기 때문에 하나의 응용 프로그램 에 비해 프로세서 가 자신 을 위해 단독 서 비 스 를 하 는 것 처럼 여러 응용 프로그램 이 동시에 진행 하 는 효 과 를 얻 을 수 있다.
다 중 스 레 드 는 운영 체제 의 이러한 병행 집행 체제 원 리 를 한 프로그램 에 활용 하여 한 프로그램 을 몇 개의 키 임무 로 나 누고 여러 개의 키 임 무 를 동시에 수행 하 며 모든 임 무 는 하나의 스 레 드 이다.이것 이 바로 다 중 루틴 프로그램 이다.
在这里插入图片描述
3.장점
1.스 레 드 를 사용 하면 장시간 동안 차지 한 프로그램의 임 무 를 배경 으로 처리 할 수 있 습 니 다.
2.사용자 인터페이스 가 더욱 사람 을 끌 어 당 길 수 있 습 니 다.예 를 들 어 사용자 가 단 추 를 누 르 면 특정한 사건 의 처 리 를 촉발 하고 진도 바 를 꺼 내 처리 진 도 를 표시 할 수 있 습 니 다.
3.프로그램의 운행 속도 가 빨 라 질 수 있 습 니 다.
4.사용자 입력,파일 읽 기와 쓰기,인터넷 송 수신 데이터 등 대기 작업 의 실현 에 있어 라인 이 비교적 유용 하 다.이런 상황 에서 메모리 점용 등 귀중 한 자원 을 방출 할 수 있다.
5.다 중 스 레 드 기술 은 IOS 소프트웨어 개발 에서 도 중요 한 역할 을 한다.
4.단점
1.대량의 스 레 드 가 있 으 면 성능 에 영향 을 줄 수 있 습 니 다.운영 체제 가 그들 사이 에서 전환 해 야 하기 때 문 입 니 다.
2.더 많은 스 레 드 는 더 많은 메모리 공간 이 필요 합 니 다.
3.스 레 드 는 프로그램 에 더 많은'bug'를 가 져 올 수 있 으 므 로 조심해 서 사용 해 야 합 니 다.
4.스 레 드 의 중단 은 프로그램 운행 에 미 치 는 영향 을 고려 해 야 합 니 다.
5.보통 블록 모델 데 이 터 는 여러 스 레 드 간 에 공유 되 므 로 스 레 드 잠 금 상황 이 발생 하 는 것 을 방지 해 야 합 니 다.
그래,쓸데없는 말 은 그만 하고 우리 직접 실전 하 자.
1.영웅 연맹 홈 페이지 에 접속 하여 게임 자 료 를 클릭 하여 이 화면 에 입장
在这里插入图片描述
2.기어 오 르 는 웹 페이지 가 동기 화 로 딩 인지 비동기 로 딩 인지 확인 합 니 다.
1.마우스 우 클릭 으로 웹 소스 코드 열기
2.ctrl+f 검색 상자 열기
3.검색 창 에 영웅 의 이름 입력
在这里插入图片描述
검색 결과 가 없 으 면 비동기 로 불 러 오기 3.영웅 url 주 소 를 찾 습 니 다.
영웅 페이지 로 돌아 가 마우스 우 클릭 으로 검 사 를 엽 니 다.
在这里插入图片描述
획득 한 가방 에서 hero 찾기list.js 이 가방 영어 로 영웅 목록.js 파일 번역
在这里插入图片描述
홈 페이지 에 있 는 영웅 애 니 를 클릭 하여 주 소 를 되 찾 고 다른 영웅 을 클릭 하여 주 소 를 되 찾 아 비교 하 세 요.
애 니:
在这里插入图片描述
자 이언 트:
在这里插入图片描述
headers 를 누 르 면 resquests url 을 되 찾 습 니 다.
애 니:https://game.gtimg.cn/images/lol/act/img/js/hero/1.js
자 이언 트:https://game.gtimg.cn/images/lol/act/img/js/hero/2.js
변 화 는 맨 뒤에 영웅 의 id 라 는 걸 알 수 있어 요.이렇게 저희 가 생각 이 났 어 요.
1.첫 번 째 요청 발송,모든 영웅 의 id 와 이름 되 찾기
2.두 번 째 요청,히 어로 스킨,히 어로 폰 스킨 url,히 어로 컴퓨터 스킨 url 획득
3.핸드폰 사진 바 이 너 리 데이터,컴퓨터 사진 바 이 너 리 데이터 요청
4.컴퓨터 판 영웅 연맹 사진 저장,모 바 일 판 영웅 연맹 사진 저장
5.다 중 프로 세 스 데이터 저장
코드 를 좀 쓸 때 가 됐어 요...헤헤
시작 주 소 를 전역 변수 로 만 듭 니 다.
在这里插入图片描述
웹 페이지 관찰
在这里插入图片描述
1.첫 번 째 요청 은 이 두 데 이 터 를 되 찾 아야 합 니 다.preview 안에 json 데이터 가 있 음 을 알 수 있 습 니 다.jsonpath 라 이브 러 리 를 가 져 와 데 이 터 를 추출 합 니 다.
在这里插入图片描述
2 두 번 째 요청,영웅 피부 이름,영웅 휴대 전화 피부 url,영웅 컴퓨터 피부 url
在这里插入图片描述
在这里插入图片描述
3.핸드폰 이미지 바 이 너 리 데 이 터 를 요청 합 니 다.컴퓨터 이미지 바 이 너 리 데 이 터 는 try-exception 문 구 를 이용 하여 오류 가 발생 하여 코드 운행 을 중단 하 는 것 을 방지 합 니 다.
在这里插入图片描述
4.컴퓨터 판 영웅 연맹 사진 을 저장 하고 핸드폰 판 영웅 연맹 사진 을 저장 하 며 try-exception 문 구 를 이용 하여 오류 가 발생 하지 않도록 코드 운행 을 중지 합 니 다.
在这里插入图片描述
5.다 중 프로 세 스 데이터 패키지 저장 실현:import threading
threading.Thread(target=self.함수 명,args=(사용 하 는 매개 변수)쓰기
在这里插入图片描述
코드 풀 기:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
마지막 으로 잘못된 보고 방지 템 플 릿 을 보 내 드 리 겠 습 니 다.참고 하 세 요.
from threading import Thread
from queue import Queue
class Love(object):
def init(self):
\#대기 열 용량,대기 열 생 성,[],{}
self.q = Queue()

def parse_data(self):
    """  :       """
    data = " {} ----   ----"
    for i in range(1, 100):
        #        ,put     +1,get  -1,get   task_done      -1
        self.q.put(data.format(i))
    #   task_done()       put             
    # join            ,          ,      , 
    #                ,      ,           
    #                      ,  join         
    self.q.join()

def func2(self):
    """  :        """
    while True:
        #         ,     ,          
        result = self.q.get()
        print(result)
        #      -1
        self.q.task_done()

def run(self):
    #     
    """  :  :        """
    m1 = Thread(target=self.parse_data)
    """  :  :         """
    m2 = Thread(target=self.func2)
    m1.start()
    #  m2          m2      ,                   ,m2    ,        
    #            ,          
    m2.daemon = True
    m2.start()
    #           ,    0          ,     0           

    m1.join()
if name == ‘main':
love = Love()
love.run()
python 공부 잘 하 세 요.
이상 은 python 이 영웅 연맹 피부 와 다 중 스 레 드 를 결합 하 는 방법 에 대한 상세 한 내용 입 니 다.python 이 영웅 연맹 피 부 를 기어 오 르 는 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기