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?

Original source