簡體   English   中英

python 中的后台無限循環

[英]Background infinite loop in python

使用 python 3.8.5,我嘗試創建一個 class object 它有一個內部無限循環,它將更新一個值,我以后可以在這個領域閱讀的知識有點差。

該試驗的目的是將具有 state 的應用程序與我制作的 gui 分離...

這是我做過的一個不起作用的試驗。

import asyncio
from time import sleep


class value_holder:
    def __init__(self):
        self.value = 0
        asyncio.create_task(self.infinite_loop())
    
    async def infinite_loop(self):
        while True:
            self.value += 1 
            sleep(3)


v = value_holder()

while True:
    print(v.value)
    sleep(1)

我實際上一無所知,所以如果有人有任何線索或關鍵字可以幫助我尋找解決方案,我將非常感激

此致

您可以改用計時器:

import threading
from time import sleep

class value_holder:
    value = 0
    timer = None
    delay = 1

    def __init__(self, delay):
        self.value = 0
        self.delay = delay

    def run(self):
        self.value += 1
        print(self.value)
        if self.timer != None: self.start()

    def start(self):
        self.timer = threading.Timer(self.delay, self.run) 
        self.timer.start()

    def stop(self):
        self.timer.cancel()

v = value_holder(3.0)
v.start()
sleep(9) #==> 1, 2, 3
v.stop()
print("Stopped")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM