我是多线程的新手,所以答案很简单。
我正在尝试创建一个类的两个实例并将它们并行运行。我已经读过我可以使用类继承来做到这一点。
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评论,我试图更改代码 - 添加一个打印这些数字的方法,但它会按顺序打印。问题仍然存在。
答案 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()