Re: [python] Proces vs. vlakno

2010-11-03 Tema obsahu Tomas Hnizdil
Jsem trochu dale, zatim jsem dosel k tomu, ze za vytvareni procesu muze
patricne pojmenovana knihovna threading :)
jeji verze pro 32/64 se nelisi, nicmene na amd64 strojich vytvori vlakna
(zustava jeden proces) a na i386 procesy (procesu je tedy vice). Tu
rozdilnou logiku bych tedy videl na knihovne thread, kterou si threading
importuje a vola z ni start_new_thread ...

Kazdopadne neco jako thread.py najit nemuzu, tohle nejspis nebude
pythonovska zalezitost, nebo se pletu?

v threading je i metoda _test(), zkousel jsem ji volat jak z pythonu 2.4.4,
2.5 a 2.6.2 ve vsech nam to tvori procesy ... nesetkal se nekdo s necim
podobnym? kde najit onen thread?
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Proces vs. vlakno

2010-11-03 Tema obsahu Petr Messner
Ahoj,

na jakém operačním systému a jaké verzi to zkoušíš? Třeba Linux nevytváří 
vlákna, ale procesy. Vlákna jsou jen procesy, které spolu sdílí nějaké 
prostředky (paměť, otevřené soubory apod.). Viz clone(2). V Linuxu prostě každé 
vlákno má svoje PID, několik vláken má shodné TGID (thread group identifier), 
je to dobře vidět v /proc/*/stat. Protože POSIX se na vlákna dívá trochu jinak, 
funkce getpid() ve skutečnosti vrací TGID :)

Takže pokud jsi na Linuxu, ani není divu, že místo vláken vidíš procesy. Záleží 
na nástroji, kterým se na ty vlákna/procesy díváš, jak ti to podá. Možná bude 
problém tady. Python si totiž nevymýšlí vlastní věci, většina toho, co dělá, je 
akorát volání různých funkcí v libc apod., takže pokud je pozorována nějaká 
domnělá anomálie, spíš než v Pythonu bude mít původ někde ještě níže. Může i 
záležet na konkrétní verzi Linuxového kernelu nebo možná i libc.

Pokud se chceš nějak pohnout z místa, dodej víc informací. Především na čem 
jedeš (distribuce, její verze, verze kernelu), jak jsi vůbec zjistil, že máš 
vlákna nebo procesy, a případně nějaký ukázkový kód, ať je jisté, že do toho 
nezasahuje nějaká knihovna třetí strany (původně tato diskuze o něčem takovém 
byla, jestli se nepletu). A samozřejmě, jaký problém ti to způsobuje, který 
potřebuješ vyřešit :) Co jsem tak narychlo zkoušel threading.Thread na Debianu 
Lenny (x86 i x64), fungovalo to normálně (tzn. příkaz ps se tvářil, že je jeden 
proces se dvěma thready).

Jinak modul thread je opravdu built-in, takže žádné thread.by skutečně není.


PM


On 3.11.2010, at 18:36, Tomas Hnizdil wrote:

 Jsem trochu dale, zatim jsem dosel k tomu, ze za vytvareni procesu muze 
 patricne pojmenovana knihovna threading :)
 jeji verze pro 32/64 se nelisi, nicmene na amd64 strojich vytvori vlakna 
 (zustava jeden proces) a na i386 procesy (procesu je tedy vice). Tu rozdilnou 
 logiku bych tedy videl na knihovne thread, kterou si threading importuje a 
 vola z ni start_new_thread ...
 
 Kazdopadne neco jako thread.py najit nemuzu, tohle nejspis nebude pythonovska 
 zalezitost, nebo se pletu?
 
 v threading je i metoda _test(), zkousel jsem ji volat jak z pythonu 2.4.4, 
 2.5 a 2.6.2 ve vsech nam to tvori procesy ... nesetkal se nekdo s necim 
 podobnym? kde najit onen thread?
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Proces vs. vlakno

2010-10-22 Tema obsahu Tomas Brabenec

Ahoj,

no, podle me( to pr(ímo v Pythonu být nemu*z(e. Python se chová tak, jak 
je napsaný kód :-D Python pr(eci sám nerozhoduje, jestli aplikace pojede 
procesove( nebo vláknove(.
Takz(e pokud se to jinak chová na 32-bit a 64-bit, pr(ípadne( se to 
jinak chová s jedním jádrem a jinak s 4 jádry, atd., tak bych zac(al 
hledat uvnitr( aplikace, pr(ípadne( v ne(jakém pouz(itém modulu, jak jsi 
psal.


Tomás(

Dne 22.10.2010 0:51, Tomas Hnizdil napsal(a):
Ano, snazim se zjistit, proc se to chova na ruznych platformach ruzne 
a proc to nekde tvori procesy a nekde vlakna - ten problem je, ze 
stezejni kod by mel byt na platforme nezavisly, coz me vede k 
myslence, ze by pes mohl byt zakopany v pythonu, ale kdo vi ... diky 
za nasmerovani, pokusim se hledat timto smerem.



 Ahoj,

 ja jsem mozna takhle vecer trochu unaveny, ale nejsem schopen poznat
na co se vlastne ptas, krome toho ze tam je mozna ruzne chovani
pythonu. Nevim, jestli ten fakt se na 32-bitovych platformach se
pouzivaji procesy a na 64-bitovych vlakna je zamer nebo ten problem, i
ktereho se snazis zjistit pricinu.

 Pokut to to to druhe a mas k tomu zdrojaky, tak by to nemel byt
zasadni problem, proste je prohledej a hledej slova threading a
processing, velmi pravdepodobne narazis na nejaky kus kodu, ktery se
chova na ruznych platformach ruzne. Tak me napada, ze by stalo za to
hledat import platform nebo from platform import architecture.

 Snad to aspon trochu pomuze. Jinak se to da samozrejme vystopovat
pomoci debuggeru na urovni OS, ale to uz je trochu slozitejsi :)

   Jirka
___
Python mailing list
Python@py.cz mailto:Python@py.cz
http://www.py.cz/mailman/listinfo/python



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Proces vs. vlakno

2010-10-22 Tema obsahu Tomas Hnizdil
Zacinam si myslet, ze to bude schovane nekde na urovni OS pripadne HW,
zjistil jsem totiz, ze na mem 32b stroji se to chova jako na tech 64bitech
... tak a ted babo rad :) Nejspis to bude schovane nekde pod podporou HW/OS
neceho, co se jmenuje copy-on-write (zkopiruj procesu data az ve chvili, kdy
do nich bude  chtit psat), coz prave pamet znacne usetri ... zajimave je, ze
se ale i tak server ukazuje jako jediny proces (ale treba s dvojnasobnou
alokaci pameti, coz je porad lepsi nez Nkrat polovicni mnozstvi pameti, kde
N pujde treba do tisicu), coz jsem si myslel ukazuje prave na pouziti vlaken
... jak pises, python tohle nema proc ovlivnovat, mel by delat co chce
uzivatel.

(no doufam, ze jsem to nenapsal uplne zmatecne)

OT - Nevidel jste nekdo nejaky zajimavy clanek, ktery by se venoval prave
sprave procesu v modernich OS/prip. s podporou HW/, kde by toto bylo trochu
lepe vysvetlene?

Diky

2010/10/22 Tomas Brabenec konfere...@brabenec.net

  Ahoj,

 no, podle mě to přímo v Pythonu být nemůže. Python se chová tak, jak je
 napsaný kód :-D Python přeci sám nerozhoduje, jestli aplikace pojede
 procesově nebo vláknově.
 Takže pokud se to jinak chová na 32-bit a 64-bit, případně se to jinak
 chová s jedním jádrem a jinak s 4 jádry, atd., tak bych začal hledat uvnitř
 aplikace, případně v nějakém použitém modulu, jak jsi psal.

 Tomáš

 Dne 22.10.2010 0:51, Tomas Hnizdil napsal(a):

 Ano, snazim se zjistit, proc se to chova na ruznych platformach ruzne a
 proc to nekde tvori procesy a nekde vlakna - ten problem je, ze stezejni kod
 by mel byt na platforme nezavisly, coz me vede k myslence, ze by pes mohl
 byt zakopany v pythonu, ale kdo vi ... diky za nasmerovani, pokusim se
 hledat timto smerem.


   Ahoj,

  ja jsem mozna takhle vecer trochu unaveny, ale nejsem schopen poznat
 na co se vlastne ptas, krome toho ze tam je mozna ruzne chovani
 pythonu. Nevim, jestli ten fakt se na 32-bitovych platformach se
 pouzivaji procesy a na 64-bitovych vlakna je zamer nebo ten problem, i
 ktereho se snazis zjistit pricinu.

  Pokut to to to druhe a mas k tomu zdrojaky, tak by to nemel byt
 zasadni problem, proste je prohledej a hledej slova threading a
 processing, velmi pravdepodobne narazis na nejaky kus kodu, ktery se
 chova na ruznych platformach ruzne. Tak me napada, ze by stalo za to
 hledat import platform nebo from platform import architecture.

  Snad to aspon trochu pomuze. Jinak se to da samozrejme vystopovat
 pomoci debuggeru na urovni OS, ale to uz je trochu slozitejsi :)

Jirka
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python



 ___
 Python mailing listpyt...@py.czhttp://www.py.cz/mailman/listinfo/python



 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Proces vs. vlakno

2010-10-22 Tema obsahu Jirka Vejrazka
 Zacinam si myslet, ze to bude schovane nekde na urovni OS pripadne HW,
 zjistil jsem totiz, ze na mem 32b stroji se to chova jako na tech 64bitech
 ... tak a ted babo rad :) Nejspis to bude schovane nekde pod podporou HW/OS
 neceho, co se jmenuje copy-on-write (zkopiruj procesu data az ve chvili, kdy
 do nich bude  chtit psat), coz prave pamet znacne usetri ... zajimave je, ze
 se ale i tak server ukazuje jako jediny proces (ale treba s dvojnasobnou
 alokaci pameti, coz je porad lepsi nez Nkrat polovicni mnozstvi pameti, kde
 N pujde treba do tisicu), coz jsem si myslel ukazuje prave na pouziti vlaken
 ... jak pises, python tohle nema proc ovlivnovat, mel by delat co chce
 uzivatel.

  To nedava zadny velky smysl, OS se nemuze rozhodnout jestli pouzije
proces nebo thread, protoze jsou tam programatorsky uplne jine
pristupy k datum, zamkum a tak. Tohle musi byt reseno na urovni
aplikace.

  Copy-on-write to nijak neovlivni, to je zalezitost alokace pameti a
jeji uspory kde to jde, ale to nijak nesouvisi s internim fungovanim
programu.

  Mas k tomu programu v pythonu zdrojaky?

   Jirka
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Proces vs. vlakno

2010-10-22 Tema obsahu Petr Blahos
 Zacinam si myslet, ze to bude schovane nekde na urovni OS pripadne HW,
 zjistil jsem totiz, ze na mem 32b stroji se to chova jako na tech 64bitech
 ... tak a ted babo rad :) Nejspis to bude schovane nekde pod podporou HW/OS
 neceho, co se jmenuje copy-on-write (zkopiruj procesu data az ve chvili, kdy

Dvě otázky:
* Co je to za OS?
* Nebude to celé nějak jinak?

Trochu mě překvapuje, že ses rozhodl nehledat problém v knihovně omniORB,
ktera slouzi ke komunikaci klientu se serverem. První co mě napadlo bylo:
SocketServer, ForkingTCPServer, ThreadingTCPServer, ale taky můžu být úplně
mimo :-)

--
Petr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Proces vs. vlakno

2010-10-22 Tema obsahu Tomas Brabenec
To není podle mě možné. Ale jak jsem psal, může být rozdíl nejen 32/64, 
ale třeba podle počtu procesorů/jader. Např. pokud aplikace zjistí, že 
máte např. 4 a více jader, funguje procesově, pokud máte jen jedno 
jádro, tak vláknově. Musí to ale být někde v aplikaci/modulu. OS se 
podle mě nemůže sám rozhodnout, jak bude aplikace fungovat.
Taky jsme problém s procesy/vlákny v Pythonu řešili a věřte, že systém 
za Vás nic sám v tomhle směru neudělá. Vše řeší aplikační logika, 
případně aplikační logika spolu s OS, ale nikdy ne OS sám.


T.

Dne 22.10.2010 14:29, Tomas Hnizdil napsal(a):
Zacinam si myslet, ze to bude schovane nekde na urovni OS pripadne HW, 
zjistil jsem totiz, ze na mem 32b stroji se to chova jako na tech 
64bitech ... tak a ted babo rad :) Nejspis to bude schovane nekde pod 
podporou HW/OS neceho, co se jmenuje copy-on-write (zkopiruj procesu 
data az ve chvili, kdy do nich bude  chtit psat), coz prave pamet 
znacne usetri ... zajimave je, ze se ale i tak server ukazuje jako 
jediny proces (ale treba s dvojnasobnou alokaci pameti, coz je porad 
lepsi nez Nkrat polovicni mnozstvi pameti, kde N pujde treba do 
tisicu), coz jsem si myslel ukazuje prave na pouziti vlaken ... jak 
pises, python tohle nema proc ovlivnovat, mel by delat co chce uzivatel.


(no doufam, ze jsem to nenapsal uplne zmatecne)

OT - Nevidel jste nekdo nejaky zajimavy clanek, ktery by se venoval 
prave sprave procesu v modernich OS/prip. s podporou HW/, kde by toto 
bylo trochu lepe vysvetlene?


Diky

2010/10/22 Tomas Brabenec konfere...@brabenec.net 
mailto:konfere...@brabenec.net


Ahoj,

no, podle mě to přímo v Pythonu být nemůže. Python se chová tak,
jak je napsaný kód :-D Python přeci sám nerozhoduje, jestli
aplikace pojede procesově nebo vláknově.
Takže pokud se to jinak chová na 32-bit a 64-bit, případně se to
jinak chová s jedním jádrem a jinak s 4 jádry, atd., tak bych
začal hledat uvnitř aplikace, případně v nějakém použitém modulu,
jak jsi psal.

Tomáš

Dne 22.10.2010 0:51, Tomas Hnizdil napsal(a):

Ano, snazim se zjistit, proc se to chova na ruznych platformach
ruzne a proc to nekde tvori procesy a nekde vlakna - ten problem
je, ze stezejni kod by mel byt na platforme nezavisly, coz me
vede k myslence, ze by pes mohl byt zakopany v pythonu, ale kdo
vi ... diky za nasmerovani, pokusim se hledat timto smerem.


 Ahoj,

 ja jsem mozna takhle vecer trochu unaveny, ale nejsem
schopen poznat
na co se vlastne ptas, krome toho ze tam je mozna ruzne chovani
pythonu. Nevim, jestli ten fakt se na 32-bitovych platformach se
pouzivaji procesy a na 64-bitovych vlakna je zamer nebo ten
problem, i
ktereho se snazis zjistit pricinu.

 Pokut to to to druhe a mas k tomu zdrojaky, tak by to nemel byt
zasadni problem, proste je prohledej a hledej slova threading a
processing, velmi pravdepodobne narazis na nejaky kus kodu,
ktery se
chova na ruznych platformach ruzne. Tak me napada, ze by
stalo za to
hledat import platform nebo from platform import
architecture.

 Snad to aspon trochu pomuze. Jinak se to da samozrejme
vystopovat
pomoci debuggeru na urovni OS, ale to uz je trochu slozitejsi :)

   Jirka
___
Python mailing list
Python@py.cz mailto:Python@py.cz
http://www.py.cz/mailman/listinfo/python



___
Python mailing list
Python@py.cz  mailto:Python@py.cz
http://www.py.cz/mailman/listinfo/python



___
Python mailing list
Python@py.cz mailto:Python@py.cz
http://www.py.cz/mailman/listinfo/python



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Proces vs. vlakno

2010-10-22 Tema obsahu Tomas Hnizdil
Zdrojaky mam.
Nic s architekturama/platformama jsem tam nenasel, jeste se tedy zkusim
kouknout na ten omniORB ...

Jinak s temi jadry je to dobry napad, ale je to presne opacne :) (na 4jadru
to dela N+K procesu, kde N je pocet klientu, K je konstantni, na 8 a 16i
jadru to vytvori jen jeden proces, ktery ma vice alokovane pameti)

2010/10/22 Tomas Brabenec konfere...@brabenec.net

  To není podle mě možné. Ale jak jsem psal, může být rozdíl nejen 32/64,
 ale třeba podle počtu procesorů/jader. Např. pokud aplikace zjistí, že máte
 např. 4 a více jader, funguje procesově, pokud máte jen jedno jádro, tak
 vláknově. Musí to ale být někde v aplikaci/modulu. OS se podle mě nemůže sám
 rozhodnout, jak bude aplikace fungovat.
 Taky jsme problém s procesy/vlákny v Pythonu řešili a věřte, že systém za
 Vás nic sám v tomhle směru neudělá. Vše řeší aplikační logika, případně
 aplikační logika spolu s OS, ale nikdy ne OS sám.

 T.


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Proces vs. vlakno

2010-10-22 Tema obsahu Hynek Fabian
Hloupa otazka - neni to chyba mereni?
Vetsina nastroju ohlasi prosty soucet velikosti vsech stranek pameti procesu a 
stranky sdilene pomoci copy-on-write nebere v uvahu.
Vlakna se uctuji svemu materskemu procesu spolecne, takze ukazuji jinak.
V kazdem pripade by pomohlo vedet o jaky system jde.

Tomas Hnizdil (Thursday 21 October 2010 23:25:05):
 Hezky vecer,
 
 spis ciste ze zvedavosti - nesetkali jste se nekdo s ruznym chovanim
 pythonu (2.4.4) na ruznych architekturach (32 vs 64bit) co se tyce
 podprocesu a vlaken?
 
 Mame aplikaci typu klient-server, ktera si pro kazdeho klienta na 32bit
 vyvari novy proces (ktery si zabere par desitek MB pameti), oproti tomu na
 64bit platformach vytvari pouze nova vlakna, takze je to z hlediska
 spotreby pameti o neco veselejsi (a mym ukolem je, aby to bylo vesele i na
 platformach s kratsima adresama :)). Jediny rozdil v softwaru ktery to
 podle platforem je, je v pythonu (:)) a knihovne omniORB, ktera slouzi ke
 komunikaci klientu se serverem, kde bych asi problem nehledal. Problem je
 ale, ze netusim takhle od boku ani kde bych hledat zacit mel.
 
 Diky za napady
 Tom
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] Proces vs. vlakno

2010-10-21 Tema obsahu Tomas Hnizdil
Hezky vecer,

spis ciste ze zvedavosti - nesetkali jste se nekdo s ruznym chovanim pythonu
(2.4.4) na ruznych architekturach (32 vs 64bit) co se tyce podprocesu a
vlaken?

Mame aplikaci typu klient-server, ktera si pro kazdeho klienta na 32bit
vyvari novy proces (ktery si zabere par desitek MB pameti), oproti tomu na
64bit platformach vytvari pouze nova vlakna, takze je to z hlediska spotreby
pameti o neco veselejsi (a mym ukolem je, aby to bylo vesele i na
platformach s kratsima adresama :)). Jediny rozdil v softwaru ktery to podle
platforem je, je v pythonu (:)) a knihovne omniORB, ktera slouzi ke
komunikaci klientu se serverem, kde bych asi problem nehledal. Problem je
ale, ze netusim takhle od boku ani kde bych hledat zacit mel.

Diky za napady
Tom
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Proces vs. vlakno

2010-10-21 Tema obsahu Jirka Vejrazka
 spis ciste ze zvedavosti - nesetkali jste se nekdo s ruznym chovanim pythonu
 (2.4.4) na ruznych architekturach (32 vs 64bit) co se tyce podprocesu a
 vlaken?

 Mame aplikaci typu klient-server, ktera si pro kazdeho klienta na 32bit
 vyvari novy proces (ktery si zabere par desitek MB pameti), oproti tomu na
 64bit platformach vytvari pouze nova vlakna, takze je to z hlediska spotreby
 pameti o neco veselejsi (a mym ukolem je, aby to bylo vesele i na
 platformach s kratsima adresama :)). Jediny rozdil v softwaru ktery to podle
 platforem je, je v pythonu (:)) a knihovne omniORB, ktera slouzi ke
 komunikaci klientu se serverem, kde bych asi problem nehledal. Problem je
 ale, ze netusim takhle od boku ani kde bych hledat zacit mel.


  Ahoj,

  ja jsem mozna takhle vecer trochu unaveny, ale nejsem schopen poznat
na co se vlastne ptas, krome toho ze tam je mozna ruzne chovani
pythonu. Nevim, jestli ten fakt se na 32-bitovych platformach se
pouzivaji procesy a na 64-bitovych vlakna je zamer nebo ten problem, i
ktereho se snazis zjistit pricinu.

  Pokut to to to druhe a mas k tomu zdrojaky, tak by to nemel byt
zasadni problem, proste je prohledej a hledej slova threading a
processing, velmi pravdepodobne narazis na nejaky kus kodu, ktery se
chova na ruznych platformach ruzne. Tak me napada, ze by stalo za to
hledat import platform nebo from platform import architecture.

  Snad to aspon trochu pomuze. Jinak se to da samozrejme vystopovat
pomoci debuggeru na urovni OS, ale to uz je trochu slozitejsi :)

Jirka
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Proces vs. vlakno

2010-10-21 Tema obsahu Tomas Hnizdil
Ano, snazim se zjistit, proc se to chova na ruznych platformach ruzne a proc
to nekde tvori procesy a nekde vlakna - ten problem je, ze stezejni kod by
mel byt na platforme nezavisly, coz me vede k myslence, ze by pes mohl byt
zakopany v pythonu, ale kdo vi ... diky za nasmerovani, pokusim se hledat
timto smerem.


   Ahoj,

  ja jsem mozna takhle vecer trochu unaveny, ale nejsem schopen poznat
 na co se vlastne ptas, krome toho ze tam je mozna ruzne chovani
 pythonu. Nevim, jestli ten fakt se na 32-bitovych platformach se
 pouzivaji procesy a na 64-bitovych vlakna je zamer nebo ten problem, i
 ktereho se snazis zjistit pricinu.

  Pokut to to to druhe a mas k tomu zdrojaky, tak by to nemel byt
 zasadni problem, proste je prohledej a hledej slova threading a
 processing, velmi pravdepodobne narazis na nejaky kus kodu, ktery se
 chova na ruznych platformach ruzne. Tak me napada, ze by stalo za to
 hledat import platform nebo from platform import architecture.

  Snad to aspon trochu pomuze. Jinak se to da samozrejme vystopovat
 pomoci debuggeru na urovni OS, ale to uz je trochu slozitejsi :)

Jirka
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python