[PYTHON] 스레드에서 클래스 메소드 실행 (파이썬)
PYTHON스레드에서 클래스 메소드 실행 (파이썬)
나는 현재 Python과 Classes를 배우고 있으며 기본적인 질문이 있지만 그것에 대한 답을 찾지 못했습니다. 이 더미 클래스가 있다고 가정 해 봅시다.
class DomainOperations:
def __init__(self, domain):
self.domain = domain
self.domain_ip = ''
self.website_thumbnail = ''
def resolve_domain(self):
#resolve domain to ipv4 and save to self.domain_ip
def generate_website_thumbnail(self):
#generate website thumbnail and save the url to self.website_thumbnail
동시에 resolve_domain과 generate_website_thumbnail을 실행하고 스레드가 완료되면 IP와 축소판을 인쇄하려고합니다.
편집 : 스레드를 사용해야합니다, 어쩌면이 같은
r = DomainOperations('google.com')
t1 = threading.Thread(target=r.resolve_domain)
t1.start()
t2 = threading.Thread(target=r.generate_website_thumbnail)
t2.start()
하지만 클래스 외부에서 사용해야합니까? 스레드를 처리 할 다른 클래스를 작성해야합니까?
그렇게하는 올바른 방법은 무엇입니까?
해결법
-
==============================
1.수업에서 전화하면 다음과 같이 간단합니다.
수업에서 전화하면 다음과 같이 간단합니다.
import threading class DomainOperations: def __init__(self): self.domain_ip = '' self.website_thumbnail = '' def resolve_domain(self): self.domain_ip = 'foo' def generate_website_thumbnail(self): self.website_thumbnail= 'bar' def run(self): t1 = threading.Thread(target=self.resolve_domain) t2 = threading.Thread(target=self.generate_website_thumbnail) t1.start() t2.start() t1.join() t2.join() print(self.domain_ip, self.website_thumbnail) if __name__ == '__main__': d = DomainOperations() d.run()
-
==============================
2.DomainOperation에서 Thread 클래스를 상속 할 수 있습니다. 이렇게하면 코드가 더 깨끗하고 쉽게 이해할 수 있습니다. run () 메서드를 재정의해야합니다.
DomainOperation에서 Thread 클래스를 상속 할 수 있습니다. 이렇게하면 코드가 더 깨끗하고 쉽게 이해할 수 있습니다. run () 메서드를 재정의해야합니다.
from threading import threading.Thread class DomainOperations(Thread): def __init__(self): self.domain_ip = '' self.website_thumbnail = '' def resolve_domain(self): self.domain_ip = 'foo' def generate_website_thumbnail(self): self.website_thumbnail= 'bar' def run(self): #domain will be resolved on first thread self.resolve_domain() #thumbnail will be resolved on second OR newly created below thread thread2 = Thread(target=self.generate_website_thumbnail) thread.start() # thread1 will wait for thread2 self.join() # thread2 will wait for thread1, if it's late. thread2.join() # here it will print ip and thumbnail before exiting first thread print(self.domain_ip, self.website_thumbnail)
그리고 당신은 이런 방식으로 스레드를 시작할 것입니다.
if __name__ == '__main__': thread1 = DomainOperations() thread1.start()
from https://stackoverflow.com/questions/15365406/run-class-methods-in-threads-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬의 무작위 반복 (0) | 2018.11.14 |
---|---|
[PYTHON] Errno 9 얻기 : 파이썬 소켓에 잘못된 파일 기술자 (0) | 2018.11.14 |
[PYTHON] 모듈이 설치되어 있지 않은지 확인하십시오. (0) | 2018.11.14 |
[PYTHON] 아나콘다가`pip`로 설치된 패키지를 찾지 못했습니다. (0) | 2018.11.14 |
[PYTHON] 판다 연결 : ValueError : 전달 된 값의 형태는 ㅋ, 색인은 blah2를 의미합니다. (0) | 2018.11.14 |