Run Class methods in threads (python)
class, methods, multithreading, python
Solution
If you call them from the class, it is as simple as:
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()
Problem
I'm currently learning Python and Classes and I have a basic question, but I didn't find any answer to it. Let's say I have this dummy class ``` 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 ``` I want to run simultaneously resolve_domain and generate_website_thumbnail and when the threads are finished I want to print the IP and the thumbnail. EDIT: I know I should use threads, maybe something like this ``` r = DomainOperations('google.com') t1 = threading.Thread(target=r.resolve_domain) t1.start() t2 = threading.Thread(target=r.generate_website_thumbnail) t2.start() ``` But should I use them outside the Class? Should I write another Class to handle Threads? What is the right way to do that?