Python 如何在保持其余程序以正常速度运行的同时定期更改变量?

Python 如何在保持其余程序以正常速度运行的同时定期更改变量?,python,pygame,Python,Pygame,我正在尝试制作一个类似于cookie clicker的游戏,但我遇到的问题是,我希望每秒更改一次“money”变量,同时保持程序的其余部分以正常速度运行。(即,当您单击按钮打开菜单时,不需要一秒钟即可刷新。制作一个线程,允许您同时运行任务: from threading import * import time class CookieThread(Thread): def __init__(self, rate): self.money = 0 sel

我正在尝试制作一个类似于cookie clicker的游戏,但我遇到的问题是,我希望每秒更改一次“money”变量,同时保持程序的其余部分以正常速度运行。(即,当您单击按钮打开菜单时,不需要一秒钟即可刷新。

制作一个线程,允许您同时运行任务:

from threading import *
import time

class CookieThread(Thread):
    def __init__(self, rate):
        self.money = 0
        self.rate = rate
        self.running = False
        super(Thread, self).__init__()

    def start(self):
        self.running = True
        super(Thread, self).start()

    def run(self):
        while self.running:
            self.money += self.rate
            time.sleep(1) # wait a second
现在创建一个线程并启动它:

cookie = CookieThread(10)
cookie.start()
您有两个主要选择(对于Python或任何语言):

  • 创建一个线程(在无限循环中执行,每n秒唤醒一次以异步方式工作),或者

  • 创建一个计时器(每N秒异步跳转到“中断处理程序”)

下面是一个很好的线程教程:

这是一个简单的“报警”处理程序:


看看这个:但是你正在使用Pygame。为什么不把它放在你的游戏循环中呢?警报会打断Pygame的游戏循环吗?还是在一个单独的线程中?
import signal, os

def handler(signum, frame):
    print('Signal handler called with signal', _)

# Set the alarm to fire every second
signal.signal(signal.SIGALRM, handler)
signal.alarm(1)

# ... Do stuff - the alarm will keep firing ...

# Done: clear alarm
signal.alarm(0)