タイトル通りなのですが、kivyの起動が遅いと感じています。
改善する方法はないものでしょうか?
どんなに短いコードであったとしても、平均4秒はかかります。
遅いときは10秒かかることも…
プログラム経験も浅いので、どれほどの起動速度が平均なのかもわかりませんが、
ユーザー目線で言えば、1秒以下であるのが望ましいかなと思います。
(フル3Dなどのゲームならば10秒くらい待つのも解るのですが…)
例えて言えばQRコードリーダーのようなアプリを作るとしたとき起動に10秒かかっていては、
サービスとして大きな欠点になり得ると思うので、出来れば起動を速くしたいのですが、
何か改善する方法はありますでしょうか?
ご教授のほど宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
こんな感じでスプラッシュスクリーンを用意して、それを表示してからkivy関連のコードが走るようにしてはいかがでしょうか?UXの観点から、ただ無反応に待たせるよりは心象がよくなると思います。
python
1 2from threading import Thread 3from tkinter import Label 4from tkinter import Tk 5 6 7class Splash(Thread): 8 def __init__(self, text, factor=0.4): 9 Thread.__init__(self) 10 self.setName("Splash") 11 self.setDaemon(True) 12 self.text = text 13 self.factor = factor 14 self.screen = None 15 16 def run(self): 17 self.screen = Tk() 18 Label(self.screen, text=self.text).pack() 19 screen_w = self.screen.winfo_screenwidth() 20 screen_h = self.screen.winfo_screenheight() 21 w, h = screen_w * self.factor, screen_h * self.factor 22 x, y = (screen_w/2) - (w/2), (screen_h/2) - (h/2) 23 self.screen.geometry("%dx%d+%d+%d" % (w, h, x, y)) 24 self.screen.overrideredirect(True) 25 self.screen.mainloop() 26 27 show = Thread.start # Alias 28 29 def hide(self): 30 if self.screen: 31 self.screen.quit() 32 33 def __enter__(self): 34 self.show() 35 36 def __exit__(self, *_): 37 self.hide() 38 39 40with Splash("ちょっとまってね"): 41 from kivy.app import App 42 from kivy.uix.button import Button 43 44 45class TestApp(App): 46 def build(self): 47 return Button(text='Hello World') 48 49 50if __name__ == '__main__': 51 TestApp().run()
投稿2017/12/13 11:06
編集2017/12/13 11:08総合スコア6149
0
ベストアンサー
端的に言えば改善する方法は使用するPCのグラフィックボードの性能を上げるしかないです。
なぜKivyの表示が遅いかというと実は質問の中に答えがあります。
>フル3Dなどのゲームならば10秒くらい待つのも解るのですが…
Kivyは画面の描画に3次元コンピュータグラフィックス用 API であるOpenGLを使用しています。なので実は描画に関していうと2Dのように見えますが実はフル3Dになります。なので描画は遅いです。
これは推測ですがマルチプラットフォームということでどの環境でも同じUIを表示しようとした結果OpenGLを描画に使用したのだと思います。
<参考>Programming Guide(翻訳済み) » Architectural Overview(翻訳済み)
そのため起動を早くするのであれば描画を別のものに置き換える必要があって海外だとKivyの公式とは別にwebkitで描画しようとしたりモバイルであればネイティブなパーツで置き換えようとしている人はいるのですがあまり目立った成果はでていないみたいです。
なので起動を早くする方法は現在のところグラフィックボードを良いものを入れるとかしかないです。例えばGTX1060とかで動かすと起動は1秒ぐらいになります。
>例えて言えばQRコードリーダーのようなアプリを作るとしたとき起動に10秒かかっていては、サービスとして大きな欠点になり得る
たぶんサービスの内容にもよるのですが毎日起動してちょっと動かすみたいアプリはKivyは不向きかもしれません。
起動を早くする方法はないですが、ほかの方が指摘されているようにスプラッシュスクリーンを入れるとかするとだいぶ印象は変わってくるかと思います。
投稿2017/12/13 14:50
総合スコア282
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/13 16:53