您的位置:

Python: 快速编写无限循环程序的技巧

在许多情况下,我们需要编写一个永不停止的程序,例如服务器、监控程序、游戏手柄输入监视器等等。在Python中编写这种程序非常容易,本文将介绍几种方法。

一、使用while True循环

while True:
    # 程序代码

这是编写无限循环程序最常见和最容易理解的方法。通过将条件设置为True,while循环会一直循环直到程序被手动终止或者发生异常。

下面是一个简单的例子,每隔1秒钟输出一句话:

import time

while True:
    print("Hello!")
    time.sleep(1)

二、使用itertools.cycle()

Python的itertools模块提供了一个cycle函数,可以将一个序列无限重复。我们可以使用这个函数来实现无限循环。

import itertools

for item in itertools.cycle("Hello!"):
    print(item)

上面的代码将会循环输出Hello!,一直循环下去。

三、使用asyncio

Python3.4引入了asyncio库,它使编写高效异步程序变得非常容易。asyncio实现了一个事件循环,可以监视异步任务并在必要时调用它们的回调函数。

下面是一个简单的使用asyncio的例子,它每隔1秒输出一个随机数:

import asyncio
import random

async def main():
    while True:
        print(random.randint(0, 10))
        await asyncio.sleep(1)

asyncio.run(main())

四、使用signal模块

Python的signal模块提供了一种方式来处理UNIX信号。我们可以在程序中注册一个信号处理函数,并在程序接收到指定的信号时执行该函数。

下面是一个示例程序,每隔1秒输出一句话,在接收到信号SIGINT时程序退出:

import signal
import time

def handler(signum, frame):
    print("Received signal", signum)
    exit()

signal.signal(signal.SIGINT, handler)

while True:
    print("Hello!")
    time.sleep(1)

五、使用threading模块

Python的threading模块可以实现多线程编程。我们可以使用一个线程来执行主程序,并在必要时创建一个新的线程执行某些操作。下面是一个简单的示例程序:

import threading
import time

def worker():
    while True:
        print("Hello from worker!")
        time.sleep(1)

thread = threading.Thread(target=worker)
thread.start()

while True:
    print("Hello!")
    time.sleep(1)

在本例中,主线程和工作线程将一直循环下去。