2

我有一个 Python 程序,其中包含许多我在 while 循环中调用的函数。

我需要我的 while 循环在它第一次执行循环时调用所有函数,但是我想每两分钟只调用一次其中一个函数。

这是一个代码示例:

def dostuff():
    print('I\'m doing stuff!')
def dosthings():
    print('I\'m doing things!')
def dosomething():
    print('I\'m doing something!')

if __name__ == '__main__':
    while True:
        dostuff()
        print('I did stuff')
        dosthings()
        print('I did things')  #this should run once every X seconds, not on all loops
        dosomething()
        print('I did something')

我怎样才能达到这个结果?我必须使用多线程/多处理吗?

4

1 回答 1

2

这是一个快速而简单的单线程演示,使用,如果您不想包括在睡眠中花费的时间time.perf_counter(),您也可以使用:time.process_time()

import time


# Changed the quoting to be cleaner.
def dostuff():
    print("I'm doing stuff!")

def dosthings():
    print("I'm doing things!")

def dosomething():
    print("I'm doing something!")


if __name__ == '__main__':
    x = 5
    clock = -x  # So that (time.perf_counter() >= clock + x) on the first round

    while True:
        dostuff()
        print('I did stuff')

        if time.perf_counter() >= clock + x:
            # Runs once every `x` seconds.
            dosthings()
            print('I did things')
            clock = time.perf_counter()

        dosomething()
        print('I did something')

        time.sleep(1)  # Just to see the execution clearly.

现场观看

于 2019-07-29T20:16:09.317 回答