PYTHON 프로그래밍

본문 바로가기
사이트 내 전체검색


PYTHON 프로그래밍
PYTHON 프로그래밍

1. threading 모듈

페이지 정보

작성자 관리자 댓글 0건 조회 3,020회 작성일 20-07-22 20:27

본문

1. threading 모듈

스레드(Thread)


1개의 프로세스(컴퓨터에서 동작하고 있는 프로그램)는 한가지 일을 하지만, 스레드를 이용하여 2가지 이상의 일을 동시에 수행할 수 있다.


예를 들어 실시간 채팅을 하는 코드를 만들 때, 송신하는 코드와 수신하는 코드를 별개로 작동시킬 수 있다.


threading 모듈 이용. import threading


threading에서 내장 모듈인 Thread를 상속받음. 


threading.Thread 클래스를 상속받는 클래스를 만들어서 run() 하여 객체 생성


Thread를 구동하기 위해서는 함수명을 run으로 해야함


MyThread로 생성된 객체를 start() 메소드를 실행할 때 run 메소드가 자동으로 수행.


thread 객체 생성 후 start() 메소드를 통해 thread 객체 실행 


target은 스레드로 돌릴 함수, args는 입력 인자.


join() 메소드를 통해 스레드가 끝날 때까지 기다림




import threading, requests, time

def getHtml(url):

    resp = requests.get(url)

    time.sleep(1)

    print(url, len(resp.text), ' chars')

 

t1 = threading.Thread(target=getHtml, args=('http://google.com',))

t1.start()

print("### End ###")




import threading, requests, time

class HtmlGetter (threading.Thread):

    def __init__(self, url):

        threading.Thread.__init__(self) 

        self.url = url

 

    def run(self):

        resp = requests.get(self.url)

        time.sleep(1)

        print(self.url, len(resp.text), ' chars')

 

t = HtmlGetter('http://google.com')

t.start()

 

print("### End ###")



import threading

## threading 모듈을 이용

## threading.Thread를 상속받는 클래스를 만들어서 run하여 객체를 생성한다.

class Messenger(threading.Thread):

  

def run(self):

for _ in range(10):

## 변수를 지정하지 않고 단순 반복을 하고 싶을 때는 _언더바를 사용한다.

print(threading.currentThread().getName())


send = Messenger(name="Sending out Messages")

receive = Messenger(name="Receiving Messages")


send.start()

receive.start()



from threading import Thread


def work(id, start, end, result):

    total = 0

    for i in range(start, end):

        total += i

    result.append(total)

    return


if __name__ == "__main__":

    START, END = 0, 100000000

    result = list()

    th1 = Thread(target=work, args=(1, START, END, result))

    

    th1.start()

    th1.join()


print(f"Result: {sum(result)}")


댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.