2016-08-03 21 views
0

Ich scrapping Daten über mehrere Websites. Um dies zu tun, habe ich mehrere Web-Scraper mit Selen und PhantomJs geschrieben.Freigeben von Daten mit mehreren Python-Programmen

Diese Scraper geben Werte zurück.

Meine Frage ist: Gibt es eine Möglichkeit, diese Werte zu einem einzigen Python-Programm zu füttern, die diese Daten in Echtzeit sortieren wird.

Was ich tun möchte, ist nicht die Daten zu speichern, um es später zu analysieren, ich möchte es an ein Programm senden, das es in Echtzeit analysieren wird.

was ich versucht: Ich habe keine Ahnung, wo sogar

Antwort

-1

starten Sie können versuchen, die Daten, die Sie in eine Datei teilen möchten zu schreiben und haben das andere Skript, um es zu lesen und interpretieren. Lassen Sie das andere Skript in einer Schleife laufen, um zu prüfen, ob eine neue Datei vorhanden ist oder ob die Datei geändert wurde.

+0

Ziemlich gute Idee, ich werde versuchen mit While True: Loop und eine Zeit.stop (60). Wenn es reibungslos läuft, werde ich das Skript veröffentlichen, damit jemand anderes es sehen kann. Schade, es gibt keine Möglichkeit, Daten zwischen Python-Programmen zu teilen. – solidsnake

-1

Verwenden Sie einfach Dateien für den Datenaustausch und einen trivialen Sperrmechanismus. Jeder Schreiber oder Leser (nur ein Leser, so scheint es) erhält eine eindeutige Nummer. Wenn ein Schreiber oder Leser in die Datei schreiben möchte, benennt er sie in den ursprünglichen Namen + die Nummer um und schreibt oder liest sie und benennt sie danach wieder um. Die anderen warten, bis die Datei wieder unter ihrem eigenen Namen verfügbar ist, und greifen dann darauf zu, indem sie sie auf ähnliche Weise sperren.

Natürlich haben Sie Speicher und solche oder memmapped Dateien und Semaphoren gemeinsam. Aber dieser Mechanismus funktioniert seit über 30 Jahren auf jedem Betriebssystem, über jedes Netzwerk einwandfrei. Da ist es trivial einfach.

Es ist in der Tat ein Mutex-Semaphor eines armen Mannes. Um herauszufinden, ob sich eine Datei geändert hat, sehen Sie sich den Schreib-Timestamp an. Aber die Verriegelung ist auch notwendig, sonst landen Sie in einem Durcheinander.

+0

Wow, ich gebe zu, es ist nicht die sexyste Lösung, aber es hat bei vielen professionellen Projekten funktioniert, mit einer Software, die Dutzende von Jahren fehlerlos läuft. Ich bin froh, dass es immer noch etwas wert ist. Und ich bin froh, dass ich eine Elefantenhaut entwickelt habe. Manchmal werden fortgeschrittene Dinge durch einfache ersetzt, wie Corba von JSON. Nicht ohne Grund. –

0

Vielleicht ein named pipe geeignet wäre:

mkfifo whatever (Sie auch diese aus Ihrem Python-Skript tun können; os.mkfifo)

Sie zu whatever wie eine normale Datei schreiben kann (es wird blockiert, bis etwas liest it) und von whatever mit einem anderen Prozess zu lesen (es wird blockiert, wenn keine Daten verfügbar) ist

Beispiel:

# 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