• 締切済み

別々に実行のpythonでグローバル変数できる?

python初心者です。 例えばなんですが、 test1.py test2.py 2つのpythonコードを用意して、 test1.py側で1秒間ごとにインクリメントしていくループの処理を実行しながら、test2.pyではcronなどで定期実行させて、test1.pyでインクリメントさせている変数をprintしていくようなコードを作ることは可能でしょうか? 今回のような別々に実行させておいて、変数をtest1.py、test2.py間で変数を共有するようなグローバル変数というのはできますでしょうか? ご教示頂きますよう、どうぞよろしくお願い致します。

みんなの回答

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 プロセス間通信になりますね・・・。OSは、cronが出てくるところを見ると、linuxでしょうか・・・  まず、単純に変数を共有させて・・・は、無理筋です。ある意味、それが「できないようにする」為に、OSは一生懸命仕事してるんですから(苦笑)  冒頭につぶやいた、「プロセス間通信」をググると、あなたの欲しい情報が山のように出てくることでしょう。  例えば、python3系での該当のマニュアルは、「https://docs.python.jp/3.6/library/ipc.html」のあたりです。  ソケットを使うか、キューを使うか、シグナルを使うか・・・あたりがとりあえずの候補かな。どの仕組みも、他のプロセスと情報をやりとりするために、いったんOSに依頼して通信用の通路を作ってもらい、OS経由で情報を交換する形となります。  ソケットは、一見ネットワーク通信用に見えますが、実は、自分のマシンの中だけでの閉じた世界でも、使えますし、用途によっては、これが一番の時が良くあります。  どれもこれも、ここで簡単に・・・説明するのは、無理がありますので、とりあえず、まず、上記のpythonのマニュアルを見てください。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

グローバル変数ではありませんが共有メモリを利用する事で似たような事は可能かと。 https://docs.python.jp/3.3/library/multiprocessing.html#multiprocessing-programming

関連するQ&A