Pythonからjを呼び出す -- python フィールド と j フィールド 関連 問題

Calling J from Python












3
vote

問題

日本語

私のPythonスクリプトから配列変数で実行したいJコードがいくつかあります。 Pythonアレイは、単に200の浮動小数点数を持つ変数です。私はメモリマップファイルを知っていますが、これは非常に低いレベルと技術的なものと思われます。

は、次のようにシェルにドロップアウトせずにPythonからJ関数またはスクリプトを呼び出す簡単な方法があります。

<事前> <コード> import subprocess subprocess.check_output(["echo function.ijs | ijconsole"])

この方法を使用すると、まず私の変数を一時ファイルに保存する必要があり、Jプログラムはそのファイルをロードする必要があります。よりエレガントな方法はありますか?

英語

I have some J code that I'd like to run on an array variable from my Python script. The Python array is simply a variable with 200 floating point numbers. I am aware of memory mapped files, but this seems very low level and technical.

Is there a simple way to call a J function or script from Python without dropping out to the shell, as in:

import subprocess subprocess.check_output(["echo function.ijs | ijconsole"]) 

Using this method, I first need to save out my variable into a temporary file, and the J program needs to load that file. Is there a more elegant way?

</div
     

回答リスト

2
 
vote

サブプロセスの入力にデータを渡す単一の文字列がある場合は、一度に出力を読みたい場合は、 <コード> Popen.communicate() 。

<事前> <コード> j_process = subprocess.Popen(["ijconsole"], stdin=subprocess.PIPE, stdout=subprocess.PIPE) j_output, _ = j_process.communicate(j_input)

相互作用がより複雑な場合は、 Popen.stdin / <コード> Popen.stdout を注意してください - バッファリングのためデッドロックすることは可能です。

 

If you have a single string to pass data to a subprocess's input, and want to read its output all at once, use Popen.communicate().

j_process = subprocess.Popen(["ijconsole"],                              stdin=subprocess.PIPE, stdout=subprocess.PIPE) j_output, _ = j_process.communicate(j_input) 

If the interaction is more complex, you may use communicate with Popen.stdin/Popen.stdout, but be careful - it's possible to deadlock due to buffering.

</div
 
 

関連する質問

2  Jでioファイルを実行するのですか?  ( How do i do file io in j ) 
ファイルなどを読み書きできるようになりたいですか? ...

3  算術演算は逆方向を前進させる?  ( Arithmetic mean forwards vs backwards ) 
J:で算術意味を行うこの方法で精通している <事前> <コード> +/ % # しかし、それはまたここで <事前> <コード> # %~ +/ は、これら2つのバージョンが交換可能である場合は、いつでも他のものに対して使用する必要がある場合は? ...

1  Jの処理時間をどのように決定しますか?  ( How do you determine a processing time in j ) 
テキストデータを分析するためのプログラムを作成し、今度はJ. でプログラムランタイムを計算しようとしています。 以下のようなマトリックスを作成してJの本を読んでいますが、そのようなことをする方法はわからない <事前> <コード> ┌──────────────...

7  学習J / K / APL [閉じた]  ( Learning j k apl ) 
閉鎖。この質問は意見ベースです。現在答えを受け付けていません。 この質問を改善したいですか?この記事を編集することで事実や引用と...

2  展開に適用された連携(!)に適用されます  ( Fit conjunction applied to expand ) 
expand に 9988777666 fit接続関数を指定してデフォルト値を指定することは可能ですか?通常、<コード> Transaction.where("account_id = ? AND date > ?", t.account_id, t.d...

2  ボックス化された配列のn番目の列にアクセスする方法  ( How do i access the n th column of a boxed array ) 
形状のボックスアレイを持つ 4 3 <事前> <コード> v =. 4 3$'x1'; 'y1'; 'z1'; 'x2'; 'y2'; 'z2'; 'x3'; 'y3'; 'z3' v NB. +--+--+--+ NB. |x1|y1|z1| NB. +...

2  J.で機能を最大化または最小化する方法  ( How to write maximize or minimize function in j ) 
たとえば、返品機能の期待を最大にしたい場合 E [r] = W1R1 + W2R2と重みW1とW2の最適化値を解く。 ...

3  あなたはこの機能言語機能を呼び出しますか?  ( What do you call this functional language feature ) 
OK、恥ずかしい、私は投稿しました。説明する必要があるコード< / a>。具体的には、まず絶対値と減算をまとめ、次にソートに触れて、これらの関数に参加できる「副詞」の前提条件は、「動詞」を参加させることができます。 どのような(非APL型)言語をサポートして...

78  APL対j対k?  ( Apl versus a versus j versus k ) 
アレイ言語のランドスケープは、魅力的な間は終わらないことを混乱させています。 JまたはKまたはAPL、またはAのいずれかを選ぶ理由はありますか?これらのオプションのどれもオープンソースではありません - オープンソースバージョンはありますか?私は私の心を広げる...

3  Jの所与の長さのすべてのブール可能性  ( All boolean possibilities of given length in j ) 
与えられた長さのすべてのブール値リストのリストを与える最も簡単な動詞を望みます。 e.g. <事前> <コード> f=. NB. Insert magic here f 2 0 0 0 1 1 0 1 1 f 3 0 0 0 0 0 ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有