繁体   English   中英

可以同时运行两个无限循环吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM