可以同时运行两个无限循环吗?
我希望能够同时运行两个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()
非常感谢!真的帮了! –
它应该是'target = infiniteloop1'而不是'target = infiniteloop1()'与infiniteloop2相同 –
谢谢@Francisco。刚编辑 – 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
....
这里,中的两个循环和b()
确实是交错的,因为在每次迭代中,执行都在两者之间来回传递。
非常相似,我把第一个方法;) – Brian
是的,没有。你的第一个解决方案只有一个循环(有两个'print'语句)。 – schwobaseggl
您需要两个线程来运行两个循环。 – sobolevn
为什么你想要两个独立的循环同时运行? –
正如你使用'time.sleep'而不是更复杂的框架,如扭曲或龙卷风,你是绑在使用线程。 –