2009-10-31 3 views
3

Я могу загрузить несколько файлов довольно быстро со многими потоками сразу, но проблема в том, что через несколько минут он постепенно замедляется почти до полной остановки, я понятия не имею, почему. Нет ничего плохого в моем коде, который я вижу, и мой RAM/CPU в порядке. Единственное, о чем я могу думать, это то, что urllib2 не обрабатывает огромное количество подключений правильно. Если это помогает, я использую прокси-серверы, но у меня была проблема без них. Есть ли у кого-нибудь предложения или идеи по этому вопросу? Благодаря!Python MultiThreading With Urllib2 Issue

ответ

3

Можете ли вы подтвердить, что выполнение одинакового количества одновременных загрузок без python продолжает быстро загружаться? Возможно, проблема заключается не в вашем коде, а в том, что ваше соединение получает дросселирование или сайт, обслуживающий файлы.

Если это не проблема, вы можете попробовать библиотеку pyprocessing для реализации многопроцессорной версии вместо многопоточной версии. Если вы используете python 2.6, pyprocessing включен в дистрибутив как multiprocessing. Достаточно легко преобразовать многопоточный код в многопроцессный код, поэтому стоит попробовать, если только подтвердить проблему с помощью потоковой передачи.

1

Как и в случае другого ответа, проблема может быть связана с вашим подключением или сайтом, обслуживающим файлы. Если вы можете запустить свой код на тестовом сервере локально, вы сможете устранить это.

Если проблема устранена при использовании тестового сервера, проблема связана с подключением или удаленным сервером.

Если проблема не устранена при использовании тестового сервера, это больше похоже на что-то в вашем коде, но тогда вы, по крайней мере, будете иметь журналы сервера, чтобы дать вам больше информации о том, что происходит.

Что касается еще одного проспекта, вы можете исследовать, this thread предлагает использовать httplib2 вместо urllib2.