【发布时间】:2017-09-13 02:22:02
【问题描述】:
我正在尝试制作一个相互独立的循环,因为第二个循环正在等待使用 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()
我希望看到的是一行 1 和 2 被打印到 shell 中,但它所做的只是一行 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 被一遍又一遍地打印,每当我写东西并按回车时,它应该会被打印出来,但 1 的循环不应该停止。
【问题讨论】:
-
你的第二个代码对我有用......你得到了什么?
-
您的线程正在竞争非同步资源,特别是控制台。如果我将 loopA 的循环设置为睡眠 10,我可以输入“12345”并等待打印,然后继续输入“67890”,raw_input 得到“67890”。 print 语句强制控制台丢弃所有内容并从 raw_input 重新开始。
-
第二个代码:我希望每秒打印 1,即使我正在编写输入并且还没有按回车键。输入停止该过程并等到我点击返回,我希望它根本不与循环发生冲突。
-
您是在终端中运行还是在使用 ide?肯尼描述的行为是应该发生的事情
-
我同时使用 IDLE 和 shell,以及 Geany IDE。是的,Kenny 写的是对的,但我希望 loopA 随时打印,无论我当前是否正在输入输入。
标签: python multithreading python-2.7