有没有办法定期运行非类python函数?

2024-09-30 05:31:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码片段,我希望每30秒定期执行一次。我现在正在使用time.sleep(),这很糟糕,因为它暂时阻止了与程序的任何交互,但我没有找到任何其他方法。代码是:

while True:
    mapMatrix=updateMaps(mapMatrix,5,before)
    allPlayersRecommendation(initiallyPlayed, arrayPlayerStats, mapMatrix)
    time.sleep(30)

我发现有多种方法可以使用线程库定期运行void函数,但这一种不同,因为我需要在变量mapMatrix中存储一个值


Tags: 方法代码程序truetimesleep线程while
1条回答
网友
1楼 · 发布于 2024-09-30 05:31:47

这并不是一个问题,因为你可能会认为线程使一个无效的任务成为一个普遍的假设,你在这里试图完成的似乎是将一个函数的结果赋给一个变量。由于线程的target函数的“结果”被丢弃,这就产生了一个问题

我们的解决方案非常简单,您可以简单地将变量赋值封装在一个void函数中

import threading
import time

a = 0


def get_result():
    return time.strftime("%a, %d %b %Y %H:%M:%S +0000")

def routine():
    global a
    while True:
        a = get_result()
        time.sleep(5)

threading.Thread(target=routine).start()

while True:
    print(a)

线程直接运行routine,它将以一定的间隔运行get_result,并将结果存储到全局变量a

你仍然应该考虑来自评论者的建议,{{CD5>}可能不是最合适的解决方案。尽管如此,在python中线程无法轻松完成此任务的假设是错误的

相关问题 更多 >

    热门问题