Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

thread 100%

40 views
Skip to first unread message

zigi

unread,
Dec 8, 2011, 7:52:58 AM12/8/11
to
Witam,
Panowie cz jest możliwość ograniczenia wątku aby nie zajmował 100%
procesora ?

Pzdr.

zigi

unread,
Dec 12, 2011, 6:39:56 AM12/12/11
to
Może rozświetle bardziej temat.
Mam funkcję listującą katalogi i pliki (plików jest 2 000 000 szt )
wywoływaną w nowym wątku. Ładnie wszystko chodzi lecz zapycha cały
procesor.

Może ktoś ma pomysł jak to można rowiązać.

Tomek Kańka

unread,
Dec 12, 2011, 6:50:18 AM12/12/11
to
zigi <ceza...@gmail.com> napisał(a)
> Może rozświetle bardziej temat.
> Mam funkcję listującą katalogi i pliki (plików jest 2 000 000 szt )
> wywoływaną w nowym wątku. Ładnie wszystko chodzi lecz zapycha cały
> procesor.
>
> Może ktoś ma pomysł jak to można rowiązać.
>

Trochę (chyba) obok tematu. Systemy plików nie lubią duzej ilości plików
w katalogu. Kiedyś z tego powodu musiałem zmienić ext2 na ReiserFS. Może
to nie jest problem z Twoim programem, tylko z systemem.

--
Tomek

zigi

unread,
Dec 12, 2011, 7:25:29 AM12/12/11
to
On 12 Gru, 12:50, Tomek Kańka <t...@tomkan.eu.org> wrote:
> zigi <cezar4...@gmail.com> napisał(a)
>
Hm,
system jest windows 2008 R2 pliki na macierzy wszstko działa oki.
Po prostu napisaełem swój program który robi wykres zawatości
katalogów. Przy listowaniu niestety jedzie na maxa po procesorze
czasem aczkolwiek nie zawsze.
Tutaj to jest jeszcze zabawa ale chciałbym na przyszłośc pomyśleć jak
rozwiązać problem wątków i zajętości procesora, tak pomyślałem że
może ktoś miał styczność z takim tematem.

Wojciech Muła

unread,
Dec 12, 2011, 7:52:39 AM12/12/11
to
Przenośnej metody nie ma i raczej problem nie jest w wątkach,
tylko częstotliwości odwołań do funkcji systemowych.

Spróbuj poeksperymentować z http://docs.python.org/library/sys.html#sys.setcheckinterval - im większa wartość, tym
interpreter rzadziej przełącza wątki. Ale nie liczyłbym
na wiele.

w.

zigi

unread,
Dec 12, 2011, 8:50:57 AM12/12/11
to
Oprócz tego spróbuje nastawić: stack_size([size]).
Może coś z tego wyjdzie :-)



On 12 Gru, 13:52, Wojciech Muła <wojtek.m...@gmail.com> wrote:
> W dniu czwartek, 8 grudnia 2011, 13:52:58 UTC+1 użytkownik zigi napisał:
>
> > Witam,
> > Panowie cz jest możliwość ograniczenia wątku aby nie zajmował 100%
> > procesora ?
>
> Przenośnej metody nie ma i raczej problem nie jest w wątkach,
> tylko częstotliwości odwołań do funkcji systemowych.
>
> Spróbuj poeksperymentować zhttp://docs.python.org/library/sys.html#sys.setcheckinterval- im większa wartość, tym

Piotr M Kuć

unread,
Dec 12, 2011, 9:30:24 AM12/12/11
to
W artykule <3b5ef72b-8424-4287...@m10g2000vbc.googlegroups.com> zigi napisal(a):

> On 12 Gru, 12:50, Tomek Kańka <t...@tomkan.eu.org> wrote:
>> zigi <cezar4...@gmail.com> napisał(a)
>>
> Hm,
> system jest windows 2008 R2 pliki na macierzy wszstko działa oki.
> Po prostu napisaełem swój program który robi wykres zawatości
> katalogów. Przy listowaniu niestety jedzie na maxa po procesorze
> czasem aczkolwiek nie zawsze.
> Tutaj to jest jeszcze zabawa ale chciałbym na przyszłośc pomyśleć jak
> rozwiązać problem wątków i zajętości procesora, tak pomyślałem że
> może ktoś miał styczność z takim tematem.

Takiemu wątkowi obniż priorytet by nie zarzynał wszystkiego.
Też będzie 100% zużycia procesora, ale najpierw zostaną obsłużone
inne procesy/wątki a ten nisko-priorytetowy wątek roboczy
wykorzysta pozostałą część czasu procesora. Tylko pamiętaj
że jeśli będziesz chciał robić naprawdę wielowątkową aplikację
w CPythonie, to pewnie nadziejesz się na GIL-a[1] i będziesz musiał
rozmontować aplikację na wieloprocesową.


[1] http://wiki.python.org/moin/GlobalInterpreterLock



--
Pozdrawiam, Piotr.Kuc-(szympans)-kuciak.net
Piotr Kuć

zigi

unread,
Dec 12, 2011, 10:08:42 AM12/12/11
to
Super dzięki za materiał.

Pzdr.



On 12 Gru, 15:30, Piotr M Kuć <kuc...@nospam.invalid> wrote:
> W artykule <3b5ef72b-8424-4287-8540-a82c258d8...@m10g2000vbc.googlegroups.com> zigi napisal(a):

Jordan Szubert

unread,
Dec 12, 2011, 3:59:39 PM12/12/11
to
Dnia 12-12-2011 o 13:25:29 zigi <ceza...@gmail.com> napisał(a):

> Hm,
> system jest windows 2008 R2 pliki na macierzy wszstko działa oki.
> Po prostu napisaełem swój program który robi wykres zawatości
> katalogów. Przy listowaniu niestety jedzie na maxa po procesorze
> czasem aczkolwiek nie zawsze.
> Tutaj to jest jeszcze zabawa ale chciałbym na przyszłośc pomyśleć jak
> rozwiązać problem wątków i zajętości procesora, tak pomyślałem że
> może ktoś miał styczność z takim tematem.

czemu obniżenie priorytetu wątku nie wystarcza (nie wiem jak to zrobić,
ale powinno się dać)?

[8<]
--
Jordan Szubert

mkp

unread,
Dec 12, 2011, 4:00:51 PM12/12/11
to zigi
W dniu 08.12.2011r. 13:52, zigi pisze:
Jesli watek robi cos w petli to mozna dolozyc jakiegos drobnego sleepa.
O ile takie rozwiazanie jest akceptowalne.

Marcin

mkp

unread,
Dec 12, 2011, 4:01:21 PM12/12/11
to
W dniu 08.12.2011r. 13:52, zigi pisze:

Rob Wolfe

unread,
Dec 12, 2011, 4:35:14 PM12/12/11
to
zigi <ceza...@gmail.com> writes:

> On 12 Gru, 12:50, Tomek Kańka <t...@tomkan.eu.org> wrote:
>> zigi <cezar4...@gmail.com> napisał(a)
>>
> Hm,
> system jest windows 2008 R2 pliki na macierzy wszstko działa oki.
> Po prostu napisaełem swój program który robi wykres zawatości
> katalogów. Przy listowaniu niestety jedzie na maxa po procesorze
> czasem aczkolwiek nie zawsze.
> Tutaj to jest jeszcze zabawa ale chciałbym na przyszłośc pomyśleć jak
> rozwiązać problem wątków i zajętości procesora, tak pomyślałem że
> może ktoś miał styczność z takim tematem.

Skąd pewność, że tutaj problemem są akurat wątki?
Czy program odpalony jednowątkowo nie zarzyna procka?
Jeśli faktycznie chodzi o wątki, to może odpalasz ich zbyt dużo.
Optymalna liczba wątków zależy od konkretnego przypadku,
ale tworzenie ich na pałę (np. oddzielny wątek dla każdego katalogu)
w prostej linii prowadzi do sytuacji, w której czas procesora
jest pożerany na przełączanie kontekstu między nimi.
Zwykle najlepszym wyjściem jest utworzenie puli o stałej liczbie
wątków i wrzucanie im zadań do jakiejś kolejki.
Wspomniałeś coś o rysowaniu katalogów. Nie wiem na ile zasobożerna
jest ta operacja (odpal profiler i zmierz, yappi [1]_ radzi sobie
z wątkami), ale jeśli wyjdzie, że jest wąskim gardłem, to niestety
GIL może tu być problemem. Wtedy należy użyć ``multiprocessing``,
a tam masz już nawet gotowca do pulowania procesów [2]_.
Generalnie jeśli chcesz się pobawić w optymalizację,
to polecam lekturę przygód effbota na tym polu [3]_.

.. [1] http://code.google.com/p/yappi/
.. [2] http://docs.python.org/library/multiprocessing.html#using-a-pool-of-workers
.. [3] http://effbot.org/zone/wide-finder.htm

RW

zigi

unread,
Dec 13, 2011, 4:06:13 AM12/13/11
to
Nie nie odpalam wątków "na pałę". 1 funkcja listująca chodzi w
oddzielnym wątku, jednak sortowanie katalogów 2 mln daje sie we znaki
lapikowi tym bardziej iż jest to na zmapownym dysku.

Mimo to uważam iż nawet gdy problemem jest sieć wątek nie może
zajmować do 100% procesora.



On 12 Gru, 22:35, Rob Wolfe <r...@smsnet.pl> wrote:
> .. [2]http://docs.python.org/library/multiprocessing.html#using-a-pool-of-w...

Aër

unread,
Jan 26, 2012, 4:45:16 AM1/26/12
to
On 13 Gru 2011, 10:06, zigi <cezar4...@gmail.com> wrote:
> Nie nie odpalam wątków "na pałę".  1 funkcja listująca chodzi w
> oddzielnym wątku, jednak sortowanie katalogów 2 mln daje sie we znaki
> lapikowi tym bardziej iż jest to na zmapownym dysku.
>
> Mimo to uważam iż nawet gdy problemem jest sieć wątek nie może
> zajmować do 100% procesora.
>
> On 12 Gru, 22:35, Rob Wolfe <r...@smsnet.pl> wrote:
>

Wątek jak najbardziej MOŻE zajmować 100% procesora, a nawet powinien,
inaczej chodziłby ze zmniejszoną prędkością. Proponuję, tak jak kolega
wyżej, wrzucić (w miarę możliwości) sleep-a.

Pozdrawiam
0 new messages