非常频繁地运行kivy中的函数(Kivy Clock / FreeClock)

时间:2018-06-15 10:21:48

标签: python bluetooth kivy clock


我正在开发一个从蓝牙设备接收数据的应用程序(我只通过串行模块处理)。我知道怎么做。但是给它在Kivy的新生活 - 展示它 - 会产生一个与FPS同步的问题。我想在后台运行该功能,每秒数百次。可以说,10000个传入的数据包10可能是有用的。因此,如果我按照时钟调度进行,则每个周期必须小于20毫秒 简单地说: 如何从FPS中单独运行其中一个功能?是否有一种干净的方式只使用一个功能的免费版本的时钟,如何实现?
我想要一个简单的解决方案,我可以重新发明轮子,但我不想 感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用threading
以下是使用threading和kivy的一个小例子:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from kivy.properties import NumericProperty
import threading
import time

Builder.load_string('''

<MyLayout>:
    Label:
        text: str(root.data)
''')


class MyLayout(BoxLayout):
    data = NumericProperty(0)
    count = 0
    running = True

    def __init__(self,**kwargs):
        super(MyLayout,self).__init__(**kwargs)
        Clock.schedule_once(self.after_init)

    def after_init(self, dt):
        threading.Thread(target=self.func).start()

    def func(self):
        while self.running:
            self.data += 1
            time.sleep(0.1)


class MyApp(App):

    def build(self):
        self.root = MyLayout()
        return self.root

    def on_stop(self):
        self.root.running = False

MyApp().run()