質問: visual_recognition.classify( images_file, threshold='0.6', classifier_ids='my_classifier') print(json.dumps(classes, indent=2)) # 結果は、分類1のスコアが〜といったものが、json形式で返ってきます。 ``` ただ、次にフォルダ内の画像ファイルを一括で処理する場合、with文をforループに入れて処理すべきかに関して疑問を持ちました。 (APIが画像ファイルを1つずつでしか処理しない設計になっていれば、そうするしかないのかなとは思いつつも)with oepnでファイルを開いてクラウドにデータを送ってAPIで処理してもらう、という処理を繰り返すのは何となく処理が重いと感じるため、別のシンプルな方法があるのかな、と思った次第です。
回答: 複数件処理するなら、プログラム内のどこかにforループ処理は必要です。 Classify images ぐーぐる翻訳 > > イメージファイル(.jpg、.png)または.zipファイル(イメージあり)。最大画像サイズは10 MBです。20枚以下の画像を含め、.zipファイルを100MBに制限します。 > > > 複数ファイルの送信に対応してそうに見えますが。 > > 何となく処理が重いと感じる > > > 推測せずに、どこがボトルネックになっているのかを実環境で実測するのが一番です。 一般論でいうと、ネットワークIO >> DISK IO >> 超えられない壁 >> CPU > > ファイルを一括で分類 > > > 例えば、 1,画像認識を行いたいファイル一覧を事前にリスト化する。 2,リストをN(>1)に分割する。 3,分割したリストに対して、マルチプロセスまたはThreadPoolExecutor / ProcessPoolExecutorで処理をする。 という手もありますが、多分ネットワークがボトルネックになりそうな気がします。