[python] bash,signal

Honza Javorek jan.javorek na gmail.com
Pondělí Únor 18 12:07:38 CET 2013


Tak mě hlavně napadá, jestli jsi si jistý, kde je ta prodleva - jestli je
opravdu v tom Python skriptu. Kdyby byla prodleva v tom programu na
ovládání stolku, tak to tímto nevyřešíš.

Jinak je to problém komunikace dvou procesů a to můžeš udělat různě. Záleží
jestli jsi na Windows nebo na nějakém *NIXu, ale možnosti jsou celkem jasně
dány: https://en.wikipedia.org/wiki/Inter-process_communication Ty sis
vybral ten první řádek v tabulce, soubor. Můžeš použít signály, sockety,
... ale tady je asi otázka co zvládne ten bash a co je trochu overkill. Mě
se asi nejvíc pro tvoje použití líbí signály. Stačí ti v podstatě dva:
"vyfoť" a "ukonči se". Ten první by byl nějaký SIGUSR1/SIGUSR2, druhý
normálně SIGTERM, který jde odchytit a skript by se pak řádně ukončil. Z
bashe je můžeš posílat myslím úplně jednoduše pomocí kill.

Honza


2013/2/18 vepro <p.zlamal na gmail.com>

> Ahoj,
> Rad bych se optal na vas nazor ci zpusob reseni nasledujici ulohy:
>
>  V pythonu mam naspanou jednoduchou proceduru pro vyfoceni snimku na
> digitalni zrcadlovce. Tento skript chci vyuzit pro nasnimani sekvence 360
> snimku objektu na otocnem stolku. Aplikace ovladajici stolek po kazdem
> otoceni spusti bashovsky skript, ktery v podstate vola pythoni skript.
> Pythoni skript se spusti, vyfoti snimek, ulozi a posleze se ukonci. Toto se
> tedy opakuje 360 krat. Problem spociva v rychlosti obdrzeni jednoho snimku,
> ktery je cca 17s coz je z hlediska vyuziti mnoho. Zjistil jsem, ze problem
> je v porizeni prvniho snimku. Udelal jsem si testovaci smycku, kde je v
> sekvenci vyfoceno nekolik snimku, pricemz prvni snimek trva onen "obrovsky
> cas", ostatni snimky jsou relativne rychle do 2s. V mem provedeni foceni
> jednoho snimku ve skriptu je tedy kazdy snimek "prvni" a tudiz onech 17s.
> Napadlo me tedy neresit snimek jako jednorazovy skript:
> spust-vyfot-uloz-skonci ale v podobe "nekonecne" smycky, ktera by testovala
> pritomnost predem daneho "nuloveho" souboru. Pokud by soubor existoval,
> udelal by se snimek a nasledne by se smazal  "nulovy" soubor. Aplikace
> ovladajici stolek by pak jenom vytvarela onen "nulovy" soubor v pripade
> potreby udelani snimku. Ukonceni pythoniho sriptu by pak bylo provedeno
> pres test nejakeho jineho "nuloveho" souboru. Takto to bude pravdepodobne
> plnit muj ucel, ale zajimalo by me zda existuje elegantnejsi reseni napr. v
> podobe posilani nejakych signalu z bashe do pythonu.
>
> Diky za pripadne rady
> Petr
> ______________________________**_________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/**listinfo/python<http://www.py.cz/mailman/listinfo/python>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20130218/3c9d704f/attachment.html>


Další informace o konferenci Python