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
Mit Python in Speicher schreiben?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.dieter1a hat geschrieben:Es wäre schön, wenn sowas gehen könnte. Aber wie?
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 (former) Modvoice
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
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
- dieter1a
- User
- Beiträge: 75
- Registriert: Montag 26. Februar 2007, 13:08
- Wohnort: Bad Rothenfelde
- Kontaktdaten:
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
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
Jaa, hab ich bzgl. MySQL ebenfalls auf meiner Seite :Apropos, mit Python kann ich doch meines Wissens auch direkt auf einen Server mit einer Datenbank zugreifen. Oder?
http://www.angelfire.com/linux/tux25/python.html#15
Viele Grüße
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja. Habe dann später auch die Links gesehen, wo jemand ctypes vorgeschlagen hatdieter1a hat geschrieben:ich weiß jetzt nicht ob Du Dir den Beitrag bei blendpolis angeschaut hast.
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: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.
Naja, was heißt direkt? So "direkt" wie es auch mit anderen Sprachen wie PHP, Ruby etc. geht.dieter1a hat geschrieben:Apropo, mit Python kann ich doch meines Wissens auch direkt auf einen Server mit einer Datenbank zugreifen. Oder?
Ich komme hier grad nicht mit - kann es sein dass sich die Fragestellung verändert hat?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?
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.dieter1a hat geschrieben:Wäre ja auch eine Lösung des Zwischenspeicherns von Vectordaten ohne Inanspruchname von Game Engine belastenden Methoden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- dieter1a
- User
- Beiträge: 75
- Registriert: Montag 26. Februar 2007, 13:08
- Wohnort: Bad Rothenfelde
- Kontaktdaten:
Ich komme hier grad nicht mit - kann es sein dass sich die Fragestellung verändert hat?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?
Hier benutze ich Director als comunication-Tool, was zwischen Server und Blender.exe via Textdateien die Daten hin und her schaufelt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Naja, das kannst du auch mit Python machen, wenn die Datenbank mitspielt. Hängt eben ab, was das für eine ist.dieter1a hat geschrieben:Hier benutze ich Director als comunication-Tool, was zwischen Server und Blender.exe via Textdateien die Daten hin und her schaufelt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Mach doch mal bitte für einen Moment JavaScript aus. Dann kannst Du sie problemlos anschauen / speichern.leider kann ich die Seite nicht öffnen, weil ich die ca 1000 Cookies abgelehnt habe.
Viele Grüße
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Den MySQL-Code würde man eher so schreiben:abgdf hat geschrieben:Mach doch mal bitte für einen Moment JavaScript aus. Dann kannst Du sie problemlos anschauen / speichern.
Code: Alles auswählen
while True:
row = cursor.fetchone()
if not row:
break
print row
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- dieter1a
- User
- Beiträge: 75
- Registriert: Montag 26. Februar 2007, 13:08
- Wohnort: Bad Rothenfelde
- Kontaktdaten:
Du hast bedacht, dass die Datenbank im Internet und nicht auf dem eigenen Rechner liegt?Leonidas hat geschrieben:Na dann kannst du sie einfach via ``MySQLdb``-Modul ansprechen. Musst du natürlich installiert haben.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.dieter1a hat geschrieben:Du hast bedacht, dass die Datenbank im Internet und nicht auf dem eigenen Rechner liegt?
Aber auch da gäbe es Mittel und Wege.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- dieter1a
- User
- Beiträge: 75
- Registriert: Montag 26. Februar 2007, 13:08
- Wohnort: Bad Rothenfelde
- Kontaktdaten:
Habe mich hier wohl nicht deutlich genug ausgedrückt. Sorrydieter1a hat geschrieben: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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Stellen wir mal das Grunddesign fest (damit es auch für nicht-Blender-User wie mich klar ist).
- Du hast eine Blender-Anwendung die Daten zwischenspeichern muss.
- Du kannst aus Blender heraus Python nutzen.
- Du möchtest nicht in Textdateien zwischenspeichern, weil das zu langsam ist und zu viel Disk-IO hervorruft.
- Also kannst du einen anderen Python-Prozess starten, der die Daten bereit hält und der per XML-RPC die Daten an den Python-Prozess aus Blender zurückgibt
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- dieter1a
- User
- Beiträge: 75
- Registriert: Montag 26. Februar 2007, 13:08
- Wohnort: Bad Rothenfelde
- Kontaktdaten:
Richtig.Leonidas hat geschrieben:
- Du hast eine Blender-Anwendung die Daten zwischenspeichern muss.
Richtig.Leonidas hat geschrieben:
- Du kannst aus Blender heraus Python nutzen.
Richtig.Leonidas hat geschrieben:
- Du möchtest nicht in Textdateien zwischenspeichern, weil das zu langsam ist und zu viel Disk-IO hervorruft.
Genau das weiß ich nicht.Leonidas hat geschrieben:
- Also kannst du einen anderen Python-Prozess starten, der die Daten bereit hält und der per XML-RPC die Daten an den Python-Prozess aus Blender zurückgibt
Python ist die Script-Sprache in Blender, mit der sich das gesamte Verhalten der Echtzeit-Animation steuern lässt.
Wie ich nun einen URL anspreche und Daten zurück bekomme weiß ich nicht.
Darum habe ich auch den Weg über ein Director-Movie gewählt, welches in der Lage ist einen Server im Netz über einen URL anzusprechen, Rückgabewerte in eine .txt zu schreiben und die Animation ist in der Lage diese .txt zu lesen und sie zu beschreiben.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Na also! Wenn das alles ist:dieter1a hat geschrieben:Wie ich nun einen URL anspreche und Daten zurück bekomme weiß ich nicht.
Code: Alles auswählen
import urllib
remote_file = urllib.urlopen('http://dein.server.vielleicht.mit.sinnloser.berlin/tld/und.deiner.datei.txt')
remote_file_contents = remote_file.read()
remote_file.close()
(Was das ``with``-Statement angeht muss ich ehrlich sagen, dass es zwar einiges bietet, aber nicht wirklich elegant ausschaut).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- dieter1a
- User
- Beiträge: 75
- Registriert: Montag 26. Februar 2007, 13:08
- Wohnort: Bad Rothenfelde
- Kontaktdaten:
Ich bin erstaunt, platt und sehr dankbar Leonidas.
Werde mich gleich morgen damit auseinander setzen und testen was dabei heraus kommt.
Wenn`s Fragen gibt, darf ich mich doch wieder hier melden?
Vielen Dank
dieter1a
Werde mich gleich morgen damit auseinander setzen und testen was dabei heraus kommt.
Wenn`s Fragen gibt, darf ich mich doch wieder hier melden?
Vielen Dank
dieter1a