質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

6555閲覧

pythonで実行時にバックエンドを毎回読み込みたくない

kururi10

総合スコア27

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

2クリップ

投稿2018/01/04 02:02

編集2018/01/04 02:03

バックエンドにtensorflowを使っています。

これをコマンドで

「python ○○.py」

と実行しますが、

毎回 Using TensorFlow backend.

から始まるため、実行が遅くなります。

Jupyter Notebookでは

2回目からは読み込んだ状態になるので高速ですが、

コマンドから使う場合は毎回毎回Usingされるので

これを読み込んだ状態にしたいです。

どなたかご存知の方はいらっしゃいますでしょうか?

ちなみに用途としては、

phpから

exec("python ○○.py")

と呼び出すことを想定しています。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

難しいですね。

ロード時間が長いものを取り除いたり、必要になるまでロードしないようにするテクニックはあります。
https://files.bemusement.org/talks/OSDC2008-FastPython/

インタプリタが走ってからメモリにロードしているので、事前にロードするのはOS側としては困るのでしょうね。

ですので、インタプリタが走っている状態を維持することが唯一の解決策のように思います。
Pythonでサーバーを立てて、POSTする形で実行をさせることになります。

そうすると今度は複数のリクエストを同時に実行するにはどうするのかなどなど大変なことになります。

学習で使用するのなら、インポートの時間は無視できるので、構いませんが、
判定に使うのなら、Pythonで直接サーバーを立てるか、重みがわかっているので、個別にコードを書いて自分で計算するほうが速いです。
その場合Pythonなんていう遅い言語を使う必要もありませんが。


サーバーを立てるのはFlaskのような簡単なフレームワークでよいのであれば、比較的少ない変更で達成できます。
以下のようなコードでサーバーを立てれば、後はpython ****.pyのところをlocalhost:8080/にアクセスすればよいことになります。

python

1from flask import Flask 2# 3# imports here 4# 5 6app = Flask(__name__) 7 8def main(): 9 # read 10 # models 11 # write 12 pass 13 14@app.route('/') 15def index(): 16 main() 17 return 'Success' 18 19if __name__ == '__main__': 20 app.run(host='0.0.0.0', port=8080)

投稿2018/01/04 04:00

編集2018/01/04 11:05
mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kururi10

2018/01/06 07:50 編集

あ!mkgreiさん! 昨年は大変お世話になりました。 今年も宜しくお願い致します^^ インタプリタが走っている状態を維持しないと駄目なのですね・・・。 できれば、 jupyterでいろいろ改良してモデルを保存して、 保存したモデルをそのまま他言語で使いたい というのが試行錯誤するのに自分的にはぴったりなのですが ちょっとわがままでしょうか・・・。 気になるのが、 ①jupyter notebookを使っていると「Running」状態になっている.ipynbは 1回TensorFlowロードすれば シャットダウンしない限り2回目以降はロードを飛ばせるので その状態のまま外部から呼び出す方法がないか (jupyterにリクエストを送るイメージ) ②「Running」状態で維持できているということは、 Anacondaでロードしっぱなしの状態が維持できているような気がして jupyterが呼び出すように、 他の言語やプログラムからAnacondaにリクエストして ロードを維持できるような気がするがその方法がないか (Anacondaにリクエストを送るイメージ) ↓ 「Running」状態で維持できている = インタプリタが走っている状態を維持できている? ↓ もしそうなら、jupyterじゃなくて他のプログラムからも コマンドを送ってRunning状態のようにできる・・・? の2点です。 ちょっとごちゃごちゃしてしまってすみません^^;
kururi10

2018/01/04 08:07

あ、今年のあいさつしててお礼を言うの忘れてました。 ご回答ありがとうございます!
mkgrei

2018/01/04 11:10

よろしくお願いします。 Jupyterでもできるのかもしれませんが、Flaskを使えば今のコードのまま簡単に修正できるのかと思いまして、上記の回答をしました。 サンプルコードのようなものを追記しました。
kururi10

2018/01/04 12:50

おおおお! 教えていただいた通り、Flaskをインストールして コードを書いてみたところ 意図していた動作ができました。 ありがとうございます^^ ソースコードさえ変更しなければ、 再読み込み時にもスピーディーに実行できるようになりました。 Apacheしか使っていなかったので 最初は不慣れでしたが、 ネットで文法を読み込んでいくと ルーティングとか シンプルに記述できるんですね。 わざわざコードまで書いていただき とても嬉しく思っております! ありがとうございました^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問