线程循环并没有开始行动

时间:2017-04-19 19:02:09

标签: python multithreading python-2.7 while-loop python-multithreading

我编写了这部分代码,只是为了表示我的问题并了解它是如何工作的:

from threading import Thread
import time
done = 0
def loopA():
    while done  > 0:
        print "okay"
        time.sleep(2)
threadA = Thread(target = loopA)
threadA.start()
user = raw_input()
user = user.lower()
if user == "attempt":
    print "attempt detected"
    done = done + 1

我期望它做什么:控制台应该要求输入,一旦我写attempt并点击返回,它应该每2秒开始打印OKAY。我错过了什么?

2 个答案:

答案 0 :(得分:0)

这会解决您的问题吗?等待循环效率低下,但它说明了这个概念。更好的是在“ENTER”上检测KEYPRESS。

def loopA():
    while done == 0:
        pass
    while done > 0:
        print "okay"
        time.sleep(2)

答案 1 :(得分:0)

你只有竞争条件:线程启动,检查值为0并立即退出,然后主程序才有机会增加值。