0

ここでちょっと変わったリクエストがありましたが、それは私が本当に答えを理解できないものです.

Web ページとローカルに保存された画像を表示する Python アプリケーションを作成しています。

私が必要としているのは、非常に軽量で非常に高速な Python を使用して Web ページを表示する方法です。その理由は、Raspberry Pi で実行されているためです。

もちろん、私には多くのオプションがあります。Raspbian ディストリビューションにインストールされている Web ブラウザーを介して実行し、Python で別のプロセスとして実行することができます。Arch-Linux 互換のブラウザーをダウンロードして、Python で別のプロセスとして実行することができます。 Gtk または PyQt を使用して、独自のネイティブ python ファイルを作成できます。

これらのアプローチにはすべて、深刻なオーバーヘッドだけでなく、欠点もあります。また、Web ページを表示するときは Web ブラウザーを全画面表示にし、画像を表示するときは最小化する必要があります。

私が Gtk と PyQt で抱えていた主な問題は、それらをメイン スレッドで実行する必要があることです。これは、私のマルチスレッド アーキテクチャと一致しないため不可能です。raspbian にプリインストールされている Web ブラウザーを使用することの欠点は、python から制御できず、速度が遅いことです。そして最後に、Arch-Linux ブラウザーを使用する際の問題は、最終的には面倒で制御が困難になることです。

理想的には、Web ページをほぼ瞬時にロードする Web ブラウザー、または複数のインスタンスを処理できるマルチスレッド Web ブラウザーが必要です。このようにして、別のブラウザが表示されている間に、1 つの Web ページをバックグラウンドでバッファできます。

私を正しい方向に向けるためのアドバイスはありますか?私は今までにきちんとしたマルチスレッドの python ベースのソリューションがあると思っていました。 )!

アドバイスをいただければ幸いです。

ジェームズ。

4

3 に答える 3

0

私は PyQT を使用してページを表示しますが、PyQT がスレッドを使用する方法がアプリケーションに適合しない場合は、PyQT を使用してミニマリスト (ここでは約 10 行のコードについて話している) の Web ブラウザーを記述し、それをフォークすることができます。あなたのメインアプリケーションから?

于 2014-07-31T05:59:29.087 に答える
0

私がたどり着いた解決策は、netsurf-fb と -.

しかし、広範なテストの結果、JavaScript をサポートしていないため、これらを使用するのは適切ではないと判断しました。

したがって、最終的な解決策は、xvfb と呼ばれる仮想 x ウィンドウ フレーム バッファーで実行される cutycapt と呼ばれるスクリプトを使用することでした。

次のように pxpect ライブラリを使用して Python から呼び出しました。

process=pexpect.spawn(xvfb_run_bin+' --server-args "-screen 0, '+self.width_height+'x24" cutycapt --url='+uri+' --out='+temp_path)
        process.wait()

私の実装では、これがオフになり、ページがレンダリングされ、スクリーンショットが保存されます。次に、画像ビューアがキャッシュから画像を取得して表示します。

さらに質問がある場合は、この質問にコメントしてください...

かわいいキャプ情報をインポートします。JavaScript を使用してページ全体をレンダリングする場合は、時間がかかります...--delay 1000この場合、読み込みを 1 秒遅らせる場所を指定します。私にとっては、ちょうどいいものにするのに約7000かかりました...

于 2014-08-01T13:40:33.957 に答える