ExternalEvaluate

外部評価器のリスト »

ExternalEvaluate["sys","cmd"]

コマンド cmd を外部評価器 sys で評価し,出力に対応する式を返す.

ExternalEvaluate[{"sys",opts},"cmd"]

外部評価器にオプション opts を使う.

ExternalEvaluate[assoc,"cmd"]

assoc で指定された外部評価器を使って cmd を評価する.

ExternalEvaluate[session,"cmd"]

指定された実行中のExternalSessionObjectcmd を評価する.

ExternalEvaluate[sys"type",]

指定の型に変換された出力を返す.

ExternalEvaluate[spec,obj]

指定されたExternalObjectExternalOperationFileURLあるいはCloudObjectのコンテンツを評価する.

ExternalEvaluate[spec,assoc]

assoc で指定されたコマンドを評価する.

ExternalEvaluate[spec,{cmd1,cmd2,}]

コマンド cmdiのリストを評価する.

ExternalEvaluate[DatabaseReference[ref],"cmd"]

ref で指定されたデータベースを使って cmd を評価する.

ExternalEvaluate[spec]

コマンドまたはオブジェクトに適用可能なExternalEvaluateの演算子形を表す.

詳細

  • ExternalEvaluate[sys,"cmd"]は,外部評価器システムを使って cmd を評価した結果を表す文字列,またはFailureオブジェクトを返す.
  • ExternalEvaluate[sys,obj]では,外部オブジェクト obj のコンテンツがコマンドとして使用される.外部オブジェクトは,ExternalObject[]ExternalOperation[]File[]URL[]CloudObject[]またはLocalObject[]でよい.
  • ExternalEvaluate[sys,]における sys の選択肢には次がある.
  • "Python"Python
    "NodeJS"Node.jsを介して実行されるJavaScript
    "Julia"Julia
    "Ruby"Ruby
    "R"R言語
    "Java"Java
    "Octave"Octave
    "Shell"Bash, Sh, Zsh, ...
    "Jupyter"Jupyterカーネル
    "SQL"SQLデータベース
    "SQL-JDBC"JDBCを使ったSQLデータベース
    ExternalSessionObject[]StartExternalSessionによって開始されたセッションオブジェクト
  • ExternalEvaluate[assoc,cmd]assoc の要素は次を含むことができる.
  • "System"開始する外部システムまたは言語
    "Evaluator"コード実行のための特定の評価器
    "Name"評価器の登録名
    "ReturnType"返すオブジェクトの型("String""Expression"等)
    "Prolog"コマンドの前に実行するコード
    "Epilog"コマンドの後に実行するコード
    "SessionProlog"セッションの前に実行するコード
    "SessionEpilog"セッションの後で実行するコード
  • ExternalEvaluate[spec,cmd]の連想 cmd の要素は以下でよい.
  • "Command"実行するコマンド文字列
    "ReturnType"返すオブジェクトの型 ("String", "Expression", ...)
    "Arguments"コマンドを呼び出す際の引数
    "Constants"コマンドの実行前に設定する変数
    "TemplateArguments""Command"がテンプレートの際のテンプレート引数
  • 次は,ExternalEvaluate[spec,obj]obj すなわち"Command"の可能な設定である.
  • "code"実行する文字列
    ExternalOperation[]実行する外部操作
    ExternalObject[]取得する外部オブジェクト
    ExternalFunction[]取得する外部関数
    File[]実行するファイルコンテンツ
    URL[]実行するためにURLによって与えられるコンテンツ
    CloudObject[]クラウドオブジェクトによって指定されたコマンド
    LocalObject[]ローカルオブジェクトによって指定されたコマンド
  • 次は,ExternalEvaluate[sys->"type",]"type",すなわち"ReturnType"の可能な設定である.
  • "Expression"Wolfram言語の式に変換しようとする
    "String"外部評価器による生の文字列出力を与える
    "ExternalObject"結果をExternalObjectとして返す
  • ExternalEvaluate[{sys,"Evaluator"evaluator},]evaluator の可能な設定は sys に依存し,以下が含まれる.
  • "path"言語の実行可能ファイルへのパス
    DatabaseReference[]SQLデータベース接続
    SQLConnection[]SQL-JDBCデータベース接続
  • デフォルトの"ReturnType"はシステムによって異なる.典型的な値は"Expression"である.
  • ExternalEvaluate[{"sys",opts},]の形式で使用可能なオプションは,ExternalEvaluate[assoc,]中の連想のキーに等しい.
  • コマンド"cmd"はインラインテンプレート式<*expr*>を含むことがある.これは,"cmd"が外部評価器に送られる前に expr を評価する.
  • ExternalEvaluate[sys,cmd]は,外部評価器を起動し,cmd を実行し,外部セッションを終了する.
  • ExternalEvaluate[session,cmd]は,実行中のセッションにコマンドを送り,セッションは終了しない.
  • sys が文字列として指定された場合,使用されるセッションオプションは,まずRegisterExternalEvaluatorを使って指定されたユーザ指定のオプションについて検索され,次にシステムに含まれるまたは自動的に検索された組込みのセッションオプションから検索される.
  • FindExternalEvaluatorsは,使用可能な評価器システムのデータ集合を与える.
  • ほとんどの外部評価器について,標準出力に対する個々の書込み操作は即座にノートブックまたはターミナルに出力される.

例題

すべて開くすべて閉じる

  (10)

単純な数式をPythonで評価する:

基本的な数学関数をNode.jを使ってJavaScriptで評価する:

Pythonのライブラリをインポートし,関数を使う:

Pythonセッションで複数行のコードを評価する:

Fileラッパーを使ってファイルに含まれているコードを実行する:

CloudDeployを使ってコードを配備し,次にコードをCloudObjectから直接実行する:

URLラッパーを使ってオンラインにあるコードを直接実行する:

Juliaの辞書がAssociationとして返される:

単一のWolfram言語の式を引数として使って,関数を名前で実行する:

データベースでクエリを評価し,結果を返す:

>を行頭に使って,ExternalEvaluateによる外部コードセルの評価を始める:

2+2

Pythonがプロビジョニングされた環境でコードを評価する:

スコープ  (36)

基本的な例題  (4)

Pythonで数の範囲を使って10のベキ乗を計算する:

結果をPython dictとして返すとAssociationが与えられる:

datetimeのように多くの型がWolfram言語の式にネイティブにマップされている:

インラインTemplateExpressionを使って2つの数をPythonで追加する:

ExternalOperationを使って複雑な操作を組み立てる:

セッションオプション  (13)

"ReturnType"  (4)

ほとんどのシステムのデフォルトの戻り型は"Expression"である:

数,文字列,リスト,連想は,"Expression"の戻り型のために自動的にインポートされる:

"String"の戻り型は結果の文字列を外部言語で返す:

データベースを使うときのデフォルトの戻り型は"Dataset"である:

"ReturnType"を使って別の形式でデータを返すことができる:

"Evaluator"  (3)

指定の"Evaluator"を使ってコードを評価する:

File"SQL"評価器と一緒に使うときの評価器はSQLiteファイルへのパスかDatabaseReference指定でよい:

Associationを使ってPythonがプロビジョニングされた環境でコードが評価できる:

"Name"  (1)

名前を使って評価器を登録する:

名前を参照することで登録された評価器を使う:

"SessionProlog"  (2)

"SessionProlog"を使ってセッションの開始時に副作用を実行する:

外部セッションを開始し,セッションの冒頭でライブラリをインポートする:

インポートしたライブラリからの関数を評価する:

セッションオブジェクトを削除する:

"SessionEpilog"  (1)

"SessionEpilog"を使ってセッションの終りに副作用を実行する:

"Prolog"  (1)

"Prolog"を使って各評価の前に副作用を実行する:

"Epilog"  (1)

"Epilog"を使って各評価の後に副作用を実行する:

コマンドオプション  (19)

"Command"  (7)

コマンドは文字列が与えられると直接実行される:

上記は以下の形でコマンドを書くことに等しい:

Fileラッパーを使ってファイルからコードを実行する:

上記は以下の形式を使ってコマンドを書くことに等しい:

URLラッパーを使ってオンラインでホストされているコードを直接実行する:

上記は以下の形式を使ってコマンドを書くことに等しい:

CloudObjectにコードを置く:

クラウドから直接評価する:

上記は以下の形式を使ってコマンドを書くことに等しい:

ExternalOperation"Command"で使うことができる:

必要な場合は,引数を使って操作を呼び出すことができる:

ExternalFunction"Command"で使うことができる:

Pythonのセッションを開始する:

ExternalObjectを作成する:

"Command""Arguments"を使ってオブジェクトを呼び出す:

"Command"だけを使う場は,オブジェクトはデフォルトの"ReturnType"に型変換される:

オブジェクトを削除する:

"ReturnType"  (1)

コマンドで"ReturnType"を指定するとセッションの"ReturnType"が無効になる:

"Arguments"  (4)

"Arguments"を使って引数を使ってコマンドを呼び出す:

単一の引数の場合はリストを使う必要はない:

第1引数としてリストを渡す必要がある場合は,追加のリストで明示的に包み込まなければならない:

"Command"内で関数を定義し,"Arguments"を使ってこれを直接呼び出すことができる:

Ruleを使っても同じ結果が得られる:

ExternalFunctionを定義することもできる:

ExternalOperation"Arguments"で使うことができる:

Pythonのセッションを開始する:

ExternalObjectを作成する:

関数呼出しでオブジェクトを使う:

オブジェクトを削除する:

"Constants"  (3)

"Constants"を使ってコマンドを実行する前に大域変数を永久的に設定する:

ExternalOperation"Constants"で使うことができる:

ExternalFunction"Constants"で使うことができる:

"TemplateArguments"  (4)

コマンドを実行する際にTemplateExpressionがインライン化できる:

"TemplateArguments"を使って明示的にTemplateSlotが埋められる:

第1引数としてリストを渡す必要がある場合は,追加のリストで明示的に包み込まなければならない:

テンプレートのスロットに名前を付け,Associationを使って名前付きの引数をテンプレートに送る:

ExternalOperation"TemplateArguments"で使うことができる:

ExternalFunction"TemplateArguments"で使うことができる:

アプリケーション  (1)

データベースのクエリを評価して結果を返す:

特性と関係  (4)

評価が失敗すると,Failureオブジェクトが返される:

投げられた例外タイプには失敗オブジェクト内からアクセスできる:

外部言語のセルは,暗黙のうちにStartExternalSessionを呼ぶ:

x=2

新たなセッションが開始された:

デフォルトで,与えられたシステムのすべてのセルがそのセッションを使う:

x * 2

続く評価で新たなセッションが開始されるようにセッションを終了する:

コマンドのリストを実行するときは,同じセッションが使用される:

別々のExternalEvaluateコールのリストでは異なるセッションが使われる:

"String""Expression"の戻り型はインポートとエキスポートを使って関連付けられる:

ImportString"PythonExpression"を使ってPython文字列を式に変換する:

ExportStringを使って式をそのPython文字列に変換することもできる.

考えられる問題  (1)

外部言語のセルは暗黙のうちにStartExternalSessionを呼び出し,単一のセッションを使う:

x = 3
x

ExternalSessionObjectが与えられない限り,ExternalEvaluateの各呼出しは別のセッションを使う:

永久的な評価の場合はStartExternalSessionを使う:

各評価が同じプロセスで行われる:

セッションを削除する:

Wolfram Research (2017), ExternalEvaluate, Wolfram言語関数, https://reference.wolfram.com/language/ref/ExternalEvaluate.html (2024年に更新).

テキスト

Wolfram Research (2017), ExternalEvaluate, Wolfram言語関数, https://reference.wolfram.com/language/ref/ExternalEvaluate.html (2024年に更新).

CMS

Wolfram Language. 2017. "ExternalEvaluate." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/ExternalEvaluate.html.

APA

Wolfram Language. (2017). ExternalEvaluate. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ExternalEvaluate.html

BibTeX

@misc{reference.wolfram_2024_externalevaluate, author="Wolfram Research", title="{ExternalEvaluate}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/ExternalEvaluate.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_externalevaluate, organization={Wolfram Research}, title={ExternalEvaluate}, year={2024}, url={https://reference.wolfram.com/language/ref/ExternalEvaluate.html}, note=[Accessed: 21-November-2024 ]}