我正在尝试使用线程来处理我正在进行的项目。这是我用作测试的代码
import threading
class one(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
while 1:
print "one"
class two(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
while 1:
print "two"
threads = []
one = one()
two = two()
one.start()
two.start()
threads.append(one)
threads.append(two)
for t in threads:
t.join()
问题是只有一级运行。你能看到我的代码有问题吗?
答案 0 :(得分:3)
您必须覆盖run
方法,而不是__init__
:
class one(threading.Thread):
def run(self):
while 1:
print "one"
此方法是在不同的线程上执行的,而one = one()
在创建对象的同一线程中启动无限循环。
如果要传递要在新线程中使用的参数,请覆盖__init__
,例如:
class NumberedThread(threading.Thread):
def __init__(self, number):
threading.Thread.__init__(self)
self.number = number
def run(self):
while 1:
print self.number
NumberedThread("one").start()
NumberedThread("two").start()
答案 1 :(得分:1)
你在你的线程构造函数中放了一个无限循环。你的第一个“线程”从来没有从它的构造函数中获取,所以试图创建它的代码只是坐着并等待创建对象。结果,你实际上并没有多线程:你在主线程中只有一个无限循环。
覆盖run
而不是__init__
,您应该全部设置。
class one(threading.Thread):
def run(self):
while 1:
print "one"
class two(threading.Thread):
def run(self):
while 1:
print "two"