Dwa procesy + PIPEy + sockety + ewaluacja stringa - potrzebne rady

0

Dzien dobry,

Jestem nowy z Python i ucze sie samemu.
Mam za zadanie napisac pewien program / skrypt i potrzebuje pomyslow lub ideai - w ktora strone isc. Bo sa to nowe zagadnienia dla mnie.

Mam napisane dwa skrypty: server.py i client.py, Uzywaja socketow, wiec to klasyka przesylania danych w low level networking. Klient laczy sie z serwerem po czym przesyla mu przez socket w petli zawartosc pliku tekstowego w ktorym mam jakies tam podstawowe dzialania arytmetyczne. Ale przesylane jest to jako string.
Serwer sobie to odbiera i zapisuje do nowego pliku. Idealna kopia oryginalu.

Czyli komunikacja dziala i przesylanie zawartosci pliku tez.

Chcialbym teraz rozwinac ten program i dodac nastepujace wlasnosci:
bede uzywal PIPEow do przesylu danych
bede mial minimum dwa procesy
jeden z procesow bedzie wyliczal string, ktory przesylany i tak naprawde kazda "linijka" z pliku jest matematycznym prostym rownaniem
drugi proces bedzie czekal na ten pierwszy a po skonczeniu go zabija
nie moge uzywac funkcji EVAL.

Moze sie myle ale mysle, ze te wszystkie zalozenia moge spelnic tworzac trzeci skrypt.
W skrypcie tym korzystam z subprocess biblioteki i stwarzam dwa procesy uzywajac konstruktora Popen. Jako opcje daje zczytywania inputow i przesyl do output ustawiam: PIPES
Myslalem tez o algorytmie: odwrotna notacja polska, ale moze ktos da wskazowke czy w dobrym kierunku podazam ? Moze jest inny sposob przeliczania dzialania w stringu ?

Czy w dobrym kierunku podazam ?

1

Właśnie na nowo wynalazłeś netcata, ale rozumiem, przykłady dydaktyczne ;)

To ma wyglądać tak:
Skrypt1 (czyta plik) --[socket]--> skypt2 (odbiera) --[pipe]--> skrypt3(wylicza)
?

Zagadniena imho bardziej do C niż do Pythona. Jak masz zrealizowaną komunkację? Blokująco, nieblokująco (select, poll, asyncore, twisted?), wątkowo?
Poćwicz może jak działa select, poll, epoll. Ew. przepisz to tak, żeby czytał albo z pliku, albo z stdin, albo z potoku (jak większość narzędzi linuksowych, np. grep czy cat).

Pytanie w jakim kierunku chcesz się rozwijać i po co Ci to? Do pracy? Jako tester/QA, sysadmin, developer (jaki? web, systemowy? to co robisz można robić w Pythonie, ale równie dobrze w C, ba, dla mnie w C jest intuicyjniej...)?

1 użytkowników online, w tym zalogowanych: 0, gości: 1