Search
Write a publication
Pull to refresh

Comments 17

Для того, чтобы повысить производительность воспользуемся модулем threading: с его помощью запустим потоки, выгружающие произведения по одному автору в одном процессе.

Так в потоке или в процессе?

А мы под линуксом или под виндой? :)

А для Python разве есть разница в данном случае? Я просто спрашиваю, без намеков :-)

Разница есть для понятия потока и процесса. В линуксе потоки являются процессами, в винде - это отдельные сущности.

Да нет, это-то я в курсе. И, в силу возраста, даже историю вопроса немного помню. Просто вот поток в Python не совсем то же, что поток в операционке (любой).

Здесь речь идёт о том, что все создаваемые потоки работают в рамках одного процесса – исполняемого файла

Похоже, запятая пропущена. Понятно. Спасибо за разъяснение.

Соглашусь, asyncio действительно актуален, threading рассматривается как один из подходов, позволяющий снизить время выполнения программ,  решающих задачи, связанные с вводом-выводом

UFO landed and left these words here

Здесь threading рассматривается как один из подходов, позволяющий снизить время выполнения программ,  решающих задачи, связанные с вводом-выводом

UFO landed and left these words here

А если у вас 100-500-1000 заданий, то создаваться столько же потоков?

Тогда уж multiprocessing с Pool использовать, и wrapper для очередей из того же модуля.

Количество потоков не обязательно равно количеству задач

У вас в коде оно равно. Если будет больше авторов, то будет будет больше потоков. Почему бы сразу это не учитывать и учить делать правильно? Плюс ещё скорее всего ядро процессора будет загружено на 100% из за того что в главном потоке у вас while шпарит на всю катушку. Хотя бы какой то sleep поставьте чтобы ядро не загружалось бесполезной работой.

Спасибо за замечания, возможность загрузки ядра на 100% действительно существует при большом количестве задач, но так как количество обрабатываемых страниц тоже ограничено, этого не происходит

Sign up to leave a comment.

Articles