继承threading.Thread类不起作用

时间:2015-09-03 18:17:30

标签: python multithreading inheritance multitasking

我是多线程的新手,所以答案很简单。

我正在尝试创建一个类的两个实例并将它们并行运行。我已经读过我可以使用类继承来做到这一点。

class hello(threading.Thread):
    def __init__(self,min,max):
        threading.Thread.__init__(self)
        time.sleep(max)

        for i in range(1000):
            print random.choice(range(min,max))

h = hello(3,5)
k = hello(0,3)

我注意到这不起作用(第一个输出是3到5之间的数字)

你能解释一下我做错了什么吗?
这种继承是否致力于做其他事情?

编辑:我想并行运行这两个对象,因为第二个对象的等待时间较短,所以必须尽快打印这些数字。

根据porglezomps评论,我试图更改代码 - 添加一个打印这些数字的方法,但它会按顺序打印。问题仍然存在。

2 个答案:

答案 0 :(得分:8)

threading的文档说明您应该覆盖""" Example """ def test(x): if float: print("success") test(9) test('\ntesting') 方法,然后使用run()方法开始在新线程上执行。在您的情况下,您的代码应该是:

start()

答案 1 :(得分:1)

Python的线程的常规实现已经知道如何运行任务,所以除非你创建一种特殊的线程(不是一种特殊的任务) - 你可能想要的是使用常规线程:

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

现在创建一个线程来运行任务:

t1 = threading.Thread(target=task, args=(3, 5,))
t2 = threading.Thread(target=task, args=(3, 5,))

t1.start()
t2.start()