Bonjour, j’utilise l’interface graphique Kivy dans mon programme python, j’ai plusieurs onglets dans cette interface, et je voudrais charger chaque onglet dans un autre coeurs de cpu
j’ai donc suivie la doc et j’ai un code qui marche :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | from kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.uix.tabbedpanel import TabbedPanel from kivy.uix.tabbedpanel import TabbedPanelItem from kivy.clock import Clock from functools import partial import multiprocessing def worker(): print('calculator') x = 2 Clock.schedule_interval(partial(func, x), 1) def func(x, dt): print("x={0}, dt={1}".format(x, dt)) x * x print("x * x = {}".format(x * x)) class MyApp(App): # layout def build(self): layout = BoxLayout(orientation='vertical') tab=TabbedPanel(do_default_tab=False) self.tabitem1=TabbedPanelItem(text='tab1') self.tabitem2=TabbedPanelItem(text='tab2') self.tabitem3=TabbedPanelItem(text='tab3') tab.add_widget(self.tabitem1) tab.add_widget(self.tabitem2) tab.add_widget(self.tabitem3) layout.add_widget(tab) #load tab in other core cpu ? #self.tab1() p = multiprocessing.Process(target=self.tab1()) p.start() p2 = multiprocessing.Process(target=worker()) p2.start() return layout def tab1(self): layout1 = BoxLayout(orientation='vertical') btn = Button(text='btn1', font_size=24) btn.bind(on_press=self.click_button) layout1.add_widget(btn) btn2 = Button(text='btn2', font_size=24) btn2.bind(on_press=self.click_button) layout1.add_widget(btn2) self.tabitem1.add_widget(layout1) def click_button(self, btn): print(btn.text) if __name__ == "__main__": MyApp().run() |
Mais au démarrage j’ai plusieurs processus python qui se crée (ce qui est normal) mais sont killer après 3-4 secondes et il en reste plus qu’un, pourquoi ? pourquoi chaque onglet n’est pas séparé dans des processus unique ? j’ai l’impression que kivy charge bien chaque onglet dans des processus différent mais après fusionne tous dans 1 seul processus/coeurs de cpu. si quelqu’un pouvait m’expliquer plus en détail ce qui se passe concrètement avec kivy et le multiprocessing
+0
-0