多线程介绍 - 一次运行2个循环

时间:2017-04-17 12:55:21

标签: python multithreading python-2.7

我试图使一个循环彼此独立,因为第二个循环正在等待使用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的循环应该永远不会停止。

1 个答案:

答案 0 :(得分:0)

我不确定您在第二个示例中寻找输入的内容,因为它似乎按照我的预期工作。至于您的第一个示例,您使用的是Thread.run()而不是Thread.start()run属性是对实际可调用对象的引用(在本例中为target),并提供用于子类化以生成线程类。调用run()不会启动新的执行线程,而只是调用主线程中的目标函数。这就是为什么你的第二个线程永远不会在第一个例子中启动。从run更改为start可解决此问题。