我试图使一个循环彼此独立,因为第二个循环正在等待使用raw_input()的输入。为此,我发现这样做的最好方法是多线程,我试图弄清楚它是如何工作的。我写了这个:
from threading import Thread
import time
def loopA():
while True:
print "1"
time.sleep(1)
def loopB():
while True:
print "2"
time.sleep(1)
threadA = Thread(target = loopA)
threadB = Thread(target = loopB)
threadA.run()
threadB.run()
threadA.join()
threadB.join()
我期望看到的是在shell中打印出一行1和2,但它所做的只是一行1。如何获得第二个线程?
编辑:好的,所以我搬家了:
from threading import Thread
import time
def loopA():
while True:
print "1"
time.sleep(1)
if __name__ == "__main__":
Thread(target = loopA).start()
while True:
n = raw_input("enter here:")
print n
我现在想要的是一遍又一遍地打印1,每当我写东西并点击返回时,它应该被打印,但1s的循环应该永远不会停止。
答案 0 :(得分:0)
我不确定您在第二个示例中寻找输入的内容,因为它似乎按照我的预期工作。至于您的第一个示例,您使用的是Thread.run()
而不是Thread.start()
。 run
属性是对实际可调用对象的引用(在本例中为target
),并提供用于子类化以生成线程类。调用run()
不会启动新的执行线程,而只是调用主线程中的目标函数。这就是为什么你的第二个线程永远不会在第一个例子中启动。从run
更改为start
可解决此问题。