Что такое «встроенный метод получения» в Python? Как я могу ускорить это? - PullRequest
7 голосов
/ 10 февраля 2009

Я пишу программу на Python с большим доступом к файлам. Он работает на удивление медленно, поэтому я использовал cProfile, чтобы выяснить, на что уходит время.

Кажется, много времени потрачено на то, что Python сообщает как "{встроенный метод получения}". Я понятия не имею, что это за метод. Что это такое, и как я могу ускорить мою программу?

Ответы [ 3 ]

5 голосов
/ 10 февраля 2009

Не видя ваш код, трудно угадать. Но, думаю, я бы сказал, что это threading.Lock.acquire метод. Часть вашего кода пытается получить многопоточную блокировку и ждет, пока не получит ее.

Могут быть простые способы исправить это с помощью

  • реструктуризация вашего доступа к файлам,
  • не блокируется,
  • используя blocking = False,
  • или вообще не использует потоки.

Но опять же, не видя ваш код, трудно угадать.

0 голосов
/ 12 августа 2009

вы хотите искать используемый процессор, а не «общее время, использованное» из этого метода - это может помочь. Извините, я не пользуюсь python, но вот так для меня в ruby ​​:) -r

0 голосов
/ 10 февраля 2009

Использование потоков для ввода-вывода - плохая идея. Потоки не заставят вашу программу ждать быстрее. Вы можете добиться лучших результатов, используя асинхронный ввод-вывод и цикл обработки событий; Опубликуйте больше информации о вашей программе и причинах использования тем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...