2016-08-03 6 views
0

複数のWebサイトからデータを削っています。 これを行うには、セレンとPhantomJを使用して複数のWebスクレイパーを作成しました。複数のPythonプログラムでデータを共有する

これらのスクレーパは値を返します。

私の質問は、リアルタイムでそのデータを並べ替える単一のPythonプログラムにこれらの値を供給することができる方法はありますか?

私がやりたいことは、後で分析するためにそのデータを保存しないで、リアルタイムで解析するプログラムに送信したいのです。私はあなたがファイルを共有し、他のスクリプトがそれを読んで解釈したいデータを書き込むしようとすることができさえ

答えて

-1

を開始するためには考えている:私はを試してみました何

。別のスクリプトをループで実行させて、新しいファイルがあるかどうか、またはファイルが変更されているかどうかを確認します。

+0

かなりいいアイデア、私はWhile True:Loopとtime.stop(60)で試してみます。それが円滑に実行される場合、私は誰かがそれを見ることができるようにスクリプトを投稿します。あまりにも悪いことに、Pythonプログラム間でデータを共有する方法はありません。 – solidsnake

-1

データ交換や簡単なロック機構のためにファイルを使用するだけです。 各ライターまたはリーダー(1つのリーダーのみ)は、固有の番号を取得します。 ライターまたはリーダーがファイルに書き込みたい場合は、元の名前+番号に名前を変更して書き込みまたは読み取りを行い、その後にその名前を変更します。 他の人は、ファイルが独自の名前で再び使用できるようになるまで待ってから、同様の方法でファイルをロックしてアクセスします。

もちろん、共有メモリ、そのような、またはmemmappedファイルとセマフォがあります。しかし、このメカニズムは、あらゆるOS上で、あらゆるネットワーク上で30年以上にわたり完璧に動作しています。それはとても単純ですから。

これは実際には貧弱な人のミューテックスセマフォです。 ファイルが変更されたかどうかを確認するには、書き込みタイムスタンプを参照してください。 しかし、ロックも必要です。そうしないと、混乱することになります。

+0

うわー、私はそれが最もセクシーな解決策ではないと認めますが、何十年もの間ソフトウェアを完璧に動かしている多くの専門プロジェクトで働いています。うれしいことはまだ価値があることです。そして私は象の皮膚を開発してうれしいです。時には高度なものがJSONのCorbaのような単純なものに置き換えられることもあります。理由なしではありません。 –

0

おそらくnamed pipeは適しているであろう:

mkfifo whatever(また、あなたのPythonスクリプト内からこれを行うことができます。os.mkfifo

あなたは、通常のファイルと同様whateverに書き込むことができます(何かが読み込まれるまで、それがブロックされますIT)と異なる処理(利用可能なデータがない場合、それはブロックする)

例でwhateverから読み出さ:

# writer.py 

with open('whatever', 'w') as h: 
    h.write('some data') # Blocks until reader.py reads the data 


# reader.py 

with open('whatever', 'r') as h: 
    print(h.read()) # Blocks until writer.py writes to the named pipe 
関連する問題