【问题标题】:threading loop isn`t kicking into action线程循环没有开始行动
【发布时间】:2017-09-16 04:09:31
【问题描述】:

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

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。我错过了什么?

【问题讨论】:

  • errr done = 0 所以你的 loopA 什么都不做并立即返回......
  • 是的,但它是 while 循环,所以我希望它会得到更新,并且每当 done 更改值时,它应该开始运行。编辑 - 下面的答案解决了它。

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


【解决方案1】:

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

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

【讨论】:

  • 是的,成功了。我想一些我还不熟悉的初学者想法。谢谢
【解决方案2】:

您只有一个竞争条件:线程启动,检查值是否为0 并在主程序有机会增加值之前立即退出。

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    相关资源
    最近更新 更多