PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RPI 2 Python-Programme parallel laufen lassen



#fritz#
20.04.2015, 09:48
Folgende Situation:
Ich habe 2 Programme (Python) auf dem RPI.
Das Hauptprogramm und als zweites die ständige Überwachung des UART (uart_1.py).
Beide laufen als Endlosschleife.

Aufgerufen werden beide durch die "autostart.sh". Die sieht so aus:


#!/bin/bash

python /home/pi/programme/hauptprogramm.py&

python /home/pi/programme/uart/uart_1.py&

exit 0


Wenn ich die autostart.sh aus der Befehlszeile starte, läuft alles wie
geplant - beide Programme starten und funktionieren auch zusammen.
aller dings kommen folgende Fehlermeldungen:


pi@raspberrypi ~/programme $ sudo sh autostart.sh
: not foundh: 2: autostart.sh:
: not foundh: 3: autostart.sh:
: not foundh: 4: autostart.sh:
: not foundh: 5: autostart.sh:
: not foundh: 6: autostart.sh:



Jetzt sollen aber beide Programme nach dem Bootvorgang selbst starten.
Dazu habe ich in der rc.local folgenden Eintrag:

.....
sudo sh /home/pi/programme/autostart.sh&
exit 0

Nach dem Start laufen beide Programme an, bleiben dann aber hängen.
-----

Ich probiere schon seit Tagen. Habe unzählig viele Möglichkeiten aus
diversen Foren ausprobiert. Die Befehle mit und ohne "&" verwendet.
Auch beide Programmeinträge in der rc.local oder auch in Crontab (ohne autostart.sh)
brachten keinen Erfolg.
Ich bin für jeden Hinweis dankbar, auch für Hinweise zu ganz anderen Möglichkeiten,
Hauptsache die Programme starten selbst und laufen nebeneinander her.

Mcgrizzly123
20.04.2015, 11:18
Hi
falls die Programm auch was ausgeben probiers mal mit nohup vor dem programmaufruf, also 'nohup sudo .... &'. Ansonsten müsstest du mal den quellcode der beiden Programme posten.

shedepe
20.04.2015, 11:59
Sinnvoll wäre es letztendlich nur die Programme in einer Screensession laufen zu lassen. Dort kann man dann auch ohne Probleme im laufenden Betrieb auf die einzelnen Sessions attachen um z.B. Ausgabe der Programme anzuschauen.

i_make_it
20.04.2015, 12:17
Ich bin jetzt nicht mehr so drin in linux, aber setz dich mal mit taskset auseinander um jeder Python Instanz einen anderen Core zuzuweisen. Dann laufen die unabhängig voneinander wirklich parallel.

Für Multitasking auf einem Core, unter Python mal "_Thread" nutzen.
http://www.python-kurs.eu/threads.php

Kampi
20.04.2015, 16:24
Hast du auch mal versucht nach der Endung .py ein Leerzeichen zu lassen ;)?

$ python Programm.py &

Ganz elegant wäre es, wenn du solche Startvorgänge etc. per Init-Skript machst, da du so auch die Programme kontrolliert beim herunterfahren beenden kannst.
Siehe z.B. hier für VNC:

http://kampis-elektroecke.de/?page_id=2655

#fritz#
05.05.2015, 22:04
Die Sache ist geklärt.
in der autostart.sh ein Programm mit "nohup", das andere ohne.
Der Grund, warum die Programme bei Aufruf in der Befehlszeile (nach dem Wechsel auf "cd programme") gelaufen sind und sonst nicht
war, dass ich bei Dateizugriffen keine kompletten Pfadangaben eingetragen habe.
Man lernt halt nie aus.....


Danke für die Hilfe.