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