2017-10-29 9 views
-3

2つのスクリプトがある場合、リストが1つあり、現在実行中で、もう1つは最初の実行中にそのリストにアクセスする必要があります。別の実行中のpythonスクリプトからリストにアクセスすることはできます

スクリプト1

import random 
example_list = [] 
while True: 
    example_list.append(random.randint(0,9)) 

スクリプト2

x = example_list[i] 

私はスクリプト2からスクリプト1で作成したリストにアクセスする方法スクリプト1.
を変更することはできませんか?

P.S.これは単なる例であり、目的は重要ではありません。

+0

'list = list + random.randint(0,9)'は 'TypeError'です。また、 'list'は組込み型' list'をシャドウします: 'list()== []'。 – ForceBru

+0

また、あなたは 'while True'でリストを追加しています。これはまあまあです。 – scharette

+0

私は彼らがpickleを使用してそこからデータを取得する方法かもしれないと考えていましたが、最初のスクリプトを編集せずにそれを実行できるかどうかはわかりません。 – Markus

答えて

0

いいえ!あなたはそれをすることはできません。少なくともPythonでは。

実行中の別のプロセスで変数にアクセスする方法はありません。

+0

をチェックしてください。スクリプト1の実行状態をpickleで保存し、そこからリストにアクセスできるかどうか知っていますか? – Markus

+0

いいえ! pickleやその他のライブラリでは、実行状態を保存することはできません。 –

+0

@ElisByberi私が考えているのは\t pyrasite(www.pyrasite.com)は、(pythonに基づいて)実行中のpythonシェルに接続したり、そこからデータを読み込んだり、コードを注入したりすることができます。 – Sharad

0

私はあなたが探しているのは、第1のスクリプトが変数にデータを入力し、第2のスクリプトがそれを使用したいというプロセス間通信(IPC)です。 IPC - メッセージキュー、共有ファイルなどのためのいくつかのメカニズムがあるかもしれません。 あなたの要件が、他のスクリプトが使用できるようにリストの内容をキャプチャするのと同じくらい簡単で(そしてリストには文字列、整数だけが含まれています)既知のファイルにPythonコードまたはJSONとして保存し、2番目のスクリプトから読み込みます。データをpickleし、pickleされたデータをファイルにキャプチャし、2番目のスクリプトでunpickleすることができます - リスト内のデータをpicklableにする。

+0

最初のスクリプトのコードを変更せずに、実行中の最初のスクリプトからデータにアクセスしようとしています。最初のスクリプトを変更せずに、2番目のスクリプトからそのデータにアクセスする方法であるかどうかを判断しようとしていました。 – Markus

+0

pyrasite - http://pyrasite.com/を見てください。これにより、実行中のPythonシェルに接続したり、そこからデータを読み込んだり、コードを注入したりすることができます。 – Sharad

0

マルチプロセッシング(1つのプロセスがもう一方のプロセスを開始)を使用できる場合は、マルチプロセッシング機能を使用してリストを共有できます。見てくださいMultiprocesssing

+0

最初のスクリプトの実行中にデータにアクセスしようとしているため、スクリプトを停止する必要があるため編集できません。 – Markus

+0

gdbを使用して実行中のプロセスにアクセスし、メモリヒープをダンプできます。私は文字列変数を見つけるためにヒープを解釈するインスタンスを見たことがありますが、それは私がそれを行うよりも多くの知識を必要とします。 https://blog.holbertonschool.com/hack-the-virtual-memory-python-bytes/ –

関連する問題