[英]Can two infinite loops be ran at once?
我希望能够while True
运行两个while True
循环。 这可能吗?
我是Python的新手,所以我不知道如何解决这个问题。
这是我制作的代码:
import time
def infiniteLoop():
while True:
print('Loop 1')
time.sleep(1)
infiniteLoop()
while True:
print('Loop 2')
time.sleep(1)
现在,它只打印一个'循环1'
提前致谢
要一次运行两个循环,您需要使用两个线程或将循环交错在一起。
方法1:
import time
def infiniteloop():
while True:
print('Loop 1')
time.sleep(1)
print('Loop 2')
time.sleep(1)
infiniteloop()
方法2:
import threading
import time
def infiniteloop1():
while True:
print('Loop 1')
time.sleep(1)
def infiniteloop2():
while True:
print('Loop 2')
time.sleep(1)
thread1 = threading.Thread(target=infiniteloop1)
thread1.start()
thread2 = threading.Thread(target=infiniteloop2)
thread2.start()
虽然Brian的答案已经涵盖了,但Python的生成器函数(以及yield
的魔力)允许使用两个实际循环并且没有线程的解决方案:
def a():
while True: # infinite loop nr. 1 (kind of)
print('Loop 1')
yield
def b():
for _ in a(): # infinite loop nr. 2
print('Loop 2')
> b()
Loop 1
Loop 2
Loop 1
Loop 2
....
这里, a()
和b()
中的两个循环是真正交错的,在每次迭代中,执行在两者之间来回传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.