Mit Python in Speicher schreiben?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Mittwoch 5. September 2007, 20:59

Hallo,

im deutschen Blender-Forum blendpolis.de ist heute die Frage aktuell, ob man über Python-Scripte in den Arbeitsspeicher schreiben und auch daraus lesen kann.
Es geht darum, schnelleren Zugriff auf erhaltenswerte Daten wärend der Laufzeit zu erhalten und Daten zwischen zu speichern.
Gibt es dazu Kenntnisse?
Ist dieser Beitrag in der richtigen Kategorie?
Wenn nicht, nicht böse sein und bitte verschieben.

Der Link zum Beitrag bei Blendpolis.de:
http://blendpolis.de/f/viewtopic.php?p=190290#190290

Es wäre schön, wenn sowas gehen könnte. Aber wie?

MfG dieter1a
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 5. September 2007, 21:32

dieter1a hat geschrieben:Es wäre schön, wenn sowas gehen könnte. Aber wie?
Direkt in Speicher schrieben: nein. Braucht auch in der Regel niemand. Indirekt wird es wohl über ctypes gehen,ist aber auch nicht so der Hit.


Wenn ihr Daten zwischen Prozessen austauschen wollt, dann solltet ihr eher RPC verwenden und wenn das zu langsam ist, dann vielleicht das Konzept des Tuple space ausprobieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
abgdf

Mittwoch 5. September 2007, 22:19

Hi,

man kann Python-Module in C schreiben. Damit dürfte das gehen. Ein Beispiel aus einer Zeitschrift, wie man sowas macht, habe ich auf meine Seite gestellt (weil der Zeitschriftenartikel nicht mehr im Internet war):

http://www.angelfire.com/linux/tux25/python.html#21

Dürfte aber nicht ganz einfach werden, aber .... im Prinzip sollte es möglich sein.

Viele Grüße
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Mittwoch 5. September 2007, 22:20

Danke Leonidas,

ich weiß jetzt nicht ob Du Dir den Beitrag bei blendpolis angeschaut hast.
Im Prinzip geht es darum, Vektordaten kurzfristig zu speichern und bei Bedarf darauf zuzugreifen.
Klar gibt es die Möglichkeit der Verwendung von globalen Variablen und die Verwendung von Textdateien.
Aber da das Tema auf den Tisch kam, dachte ich, frag doch mal bei den Spezialisten nach.
In meinem 3dpowertower.de habe ich das mit einer Datenbank gelöst, was aber eine nicht unerhebliche Zeitverzögerung mit sich bringt.
(normal sollte man die Standorte der Besucher in Echtzeit sehen können)

Apropo, mit Python kann ich doch meines Wissens auch direkt auf einen Server mit einer Datenbank zugreifen. Oder?
Ich habe das mit einem Director-Film gelöst, der über Textdateien mit dem Blender.exe-Projekt kommuniziert.
Geht das eventuell auch einfacher?
Das wäre ja der absolute 'HAMMER'.
Ich bräuchte erstmal keinen Browseraufruf, sondern einfach die Anfrage an einen URL, sprich xyz.php und natürlich die Rückgabe.
Geht sowas?
Gibts dafür Beispiele oder Tutorials?

Wäre ja auch eine Lösung des Zwischenspeicherns von Vectordaten ohne Inanspruchname von Game Engine belastenden Methoden.

Danke für Hilfen

MfG dieter1a
abgdf

Mittwoch 5. September 2007, 22:24

Apropos, mit Python kann ich doch meines Wissens auch direkt auf einen Server mit einer Datenbank zugreifen. Oder?
Jaa, hab ich bzgl. MySQL ebenfalls auf meiner Seite :P:

http://www.angelfire.com/linux/tux25/python.html#15

Viele Grüße
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Mittwoch 5. September 2007, 22:29

Danke,

leider kann ich die Seite nicht öffnen, weil ich die ca 1000 Cookies abgelehnt habe.

MfG dieter1a
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 5. September 2007, 22:33

dieter1a hat geschrieben:ich weiß jetzt nicht ob Du Dir den Beitrag bei blendpolis angeschaut hast.
Ja. Habe dann später auch die Links gesehen, wo jemand ctypes vorgeschlagen hat ;)
dieter1a hat geschrieben:Im Prinzip geht es darum, Vektordaten kurzfristig zu speichern und bei Bedarf darauf zuzugreifen.
Klar gibt es die Möglichkeit der Verwendung von globalen Variablen und die Verwendung von Textdateien.
Textdateien ist insofern recht uninteressant, da sie Disk-IO verursachen. Das ist aus Programmierer-Sicht total langweilig und verschwendet unnötig Resourcen (File Descriptors etc.).
dieter1a hat geschrieben:Apropo, mit Python kann ich doch meines Wissens auch direkt auf einen Server mit einer Datenbank zugreifen. Oder?
Naja, was heißt direkt? So "direkt" wie es auch mit anderen Sprachen wie PHP, Ruby etc. geht.
dieter1a hat geschrieben:Ich habe das mit einem Director-Film gelöst, der über Textdateien mit dem Blender.exe-Projekt kommuniziert.
Geht das eventuell auch einfacher?
Das wäre ja der absolute 'HAMMER'.
Ich bräuchte erstmal keinen Browseraufruf, sondern einfach die Anfrage an einen URL, sprich xyz.php und natürlich die Rückgabe.
Geht sowas?
Gibts dafür Beispiele oder Tutorials?
Ich komme hier grad nicht mit - kann es sein dass sich die Fragestellung verändert hat?
dieter1a hat geschrieben:Wäre ja auch eine Lösung des Zwischenspeicherns von Vectordaten ohne Inanspruchname von Game Engine belastenden Methoden.
Um Vektordaten zwischenzuspeichern müsste sich ein solcher von mir vorgeschlagener Tuple space eignen. Aber simpler noch ist ein Remote-Procedure-Call.Das heißt,dass du etwa einen XML-RPC Server hast und dieser die Vektordaten speichert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Mittwoch 5. September 2007, 22:41

dieter1a hat geschrieben:Ich habe das mit einem Director-Film gelöst, der über Textdateien mit dem Blender.exe-Projekt kommuniziert.
Geht das eventuell auch einfacher?
Das wäre ja der absolute 'HAMMER'.
Ich bräuchte erstmal keinen Browseraufruf, sondern einfach die Anfrage an einen URL, sprich xyz.php und natürlich die Rückgabe.
Geht sowas?
Gibts dafür Beispiele oder Tutorials?
Ich komme hier grad nicht mit - kann es sein dass sich die Fragestellung verändert hat?

Hier benutze ich Director als comunication-Tool, was zwischen Server und Blender.exe via Textdateien die Daten hin und her schaufelt. :wink:
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 5. September 2007, 22:42

dieter1a hat geschrieben:Hier benutze ich Director als comunication-Tool, was zwischen Server und Blender.exe via Textdateien die Daten hin und her schaufelt. :wink:
Naja, das kannst du auch mit Python machen, wenn die Datenbank mitspielt. Hängt eben ab, was das für eine ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Mittwoch 5. September 2007, 22:44

MySQL
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 5. September 2007, 23:31

Na dann kannst du sie einfach via ``MySQLdb``-Modul ansprechen. Musst du natürlich installiert haben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
abgdf

Donnerstag 6. September 2007, 16:00

leider kann ich die Seite nicht öffnen, weil ich die ca 1000 Cookies abgelehnt habe.
Mach doch mal bitte für einen Moment JavaScript aus. Dann kannst Du sie problemlos anschauen / speichern.

Viele Grüße
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 6. September 2007, 16:37

abgdf hat geschrieben:Mach doch mal bitte für einen Moment JavaScript aus. Dann kannst Du sie problemlos anschauen / speichern.
Den MySQL-Code würde man eher so schreiben:

Code: Alles auswählen

while True:
    row = cursor.fetchone()
    if not row:
         break
    print row
Davon abgesehen gibt es auch ``cursor.fetchmany()`` was in diesem Fall angebrachter wäre.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Donnerstag 6. September 2007, 17:27

Leonidas hat geschrieben:Na dann kannst du sie einfach via ``MySQLdb``-Modul ansprechen. Musst du natürlich installiert haben.
Du hast bedacht, dass die Datenbank im Internet und nicht auf dem eigenen Rechner liegt?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 6. September 2007, 17:29

dieter1a hat geschrieben:Du hast bedacht, dass die Datenbank im Internet und nicht auf dem eigenen Rechner liegt?
Solange die Datenbank von außen ansprechbar ist, ist das kein Problem. Ist aber in der Regel nicht so einfach möglich. Aber das hast du auch nicht gesagt, dass die Datenbank nicht lokal ist.

Aber auch da gäbe es Mittel und Wege.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten