我试图做一个独立的循环,因为第二个使用raw_input()等待输入。要做到这一点,我发现做这件事的最好方法是多线程,我试图弄清楚它是如何工作的。我写了这个:多线程简介 - 一次运行2个循环
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()
I`d期望看到什么是1S和2S的一排被印刷到外壳,但它是所有1S的只是一排。如何获得第二个线程?
编辑:行,所以我提出:
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的循环不应该停止。
你的第二个代码适合我......你有什么? – Aaron
您的线程正在争夺非同步资源,特别是控制台。如果我将loopA的循环设置为sleep 10,则可以输入“12345”并等待打印,然后继续输入“67890”,raw_input获得“67890”。 print语句强制控制台丢弃所有内容并从raw_input开始。 –
第二个代码:我希望每秒打印1个,即使我正在写入输入,也没有按回车。输入会停止进程并等待,直到我返回时,我希望它不会与循环进行混淆。 –