Inheritance threading.Thread class does not work

后端 未结 2 1864
没有蜡笔的小新
没有蜡笔的小新 2020-12-18 12:27

I\'m new in multithreading, so the answer is probably very simple.

I\'m trying to make two instances of one class and run them parallel. I\'ve read that I can use c

相关标签:
2条回答
  • 2020-12-18 12:49

    Python's regular implementation of a thread already knows how to run a task, so unless you're creating a special kind of thread (not a special kind of task) - what you probably want is to use the regular thread:

    def task(_min, _max): # 'min' and 'max' are actual functions!
        time.sleep(_max)
        for _ in range(1000):
            print random.choice(range(_min,_max))
    

    And now create a thread to run the task:

    t1 = threading.Thread(target=task, args=(3, 5,))
    t2 = threading.Thread(target=task, args=(3, 5,))
    
    t1.start()
    t2.start()
    
    0 讨论(0)
  • 2020-12-18 13:03

    The documentation for threading says that you should override the run() method, and then use the start() method to begin execution on a new thread. In your case, your code should be:

    class Hello(threading.Thread):
        def __init__(self, min, max):
            self.min, self.max = min, max
            threading.Thread.__init__(self)
    
        def run(self):
            time.sleep(self.max)
    
            for i in range(1000):
                print random.choice(range(self.min, self.max))
    
    # This creates the thread objects, but they don't do anything yet
    h = Hello(3,5)
    k = Hello(0,3)
    
    # This causes each thread to do its work
    h.start()
    k.start()
    
    0 讨论(0)
提交回复
热议问题