Замена для httplib Python?

Объявите переменную наподобие currentVisibleViews в вашем ViewController, и давайте сначала скажем, что видна только первая, поэтому мы начинаем с числа как 1, а также добавляем ваши представления в массив для более легкого управления: ]

В viewDidLoad добавьте свои взгляды в viewArray:

view1.isHidden = false
view2.isHidden = true
view3.isHidden = true

viewArray.append(view1)
viewArray.append(view2)
viewArray.append(view3)

Затем в вашей кнопке:

@IBAction func addViewButton(_ sender: Any) { 
    if currentVisibleViews > 2 {
        viewArray.forEach { (view) in
            view.isHidden = true
        }
        currentVisibleViews = 0
    } else {
        viewArray[currentVisibleViews].isHidden = false
        currentVisibleViews += 1
    }
}

Код выше работает так:

[ 119]
  • Сначала видны все виды
  • При первом нажатии будут скрыты все виды
  • Затем при каждом нажатии будет виден вид
  • Перейти к шагу 2 (после всех видов).
    1. Таким образом, вы можете иметь только одну функцию для управления всеми вашими представлениями, это больше не должно быть IBAction, это может быть просто метод вашего ViewController

    10
    задан Jonik 2 June 2009 в 10:57
    поделиться

    7 ответов

    Часто, когда у меня были проблемы производительности с httplib, проблема не была с самим httplib, но с тем, как я использую его. Вот несколько распространенных ошибок:

    (1) Не делайте новое соединение TCP для каждого веб-запроса. Если Вы выполняете много запроса к тому же серверу вместо этого шаблона:

        conn = httplib.HTTPConnection("www.somewhere.com")
        conn.request("GET", '/foo')
        conn = httplib.HTTPConnection("www.somewhere.com")
        conn.request("GET", '/bar')
        conn = httplib.HTTPConnection("www.somewhere.com")
        conn.request("GET", '/baz')
    

    Сделайте это вместо этого:

        conn = httplib.HTTPConnection("www.somewhere.com")
        conn.request("GET", '/foo')
        conn.request("GET", '/bar')
        conn.request("GET", '/baz')
    

    (2) Не сериализируйте свои запросы. Можно использовать потоки или asynccore или независимо от того, что Вам нравится, но если Вы выполняете несколько запросов с различных серверов, можно улучшить производительность путем выполнения их параллельно.

    22
    ответ дан 3 December 2019 в 13:24
    поделиться

    Пользователи являются complainging, что приложение является медленным. Я подозреваю, что это может произойти частично из-за клиента HTTP, который я использую.

    Я мог улучшить производительность путем замены httplib с чем-то еще?

    Вы подозреваете это, или действительно ли Вы уверены, что это это httplib? Профиль, прежде чем Вы сделаете что угодно для улучшения производительности приложения.

    Я нашел свою собственную интуицию на том, где время проведено, часто довольно плохо (учитывая, что нет некоторого ядра кода, выполняемого миллионы времен). Действительно неутешительно реализовать что-то для улучшения производительности, затем тянут приложение и видят, что это не имело никакого значения.

    Если Вы не являетесь профильными, Вы стреляете в темноте!

    19
    ответ дан 3 December 2019 в 13:24
    поделиться

    PyCurl является потрясающей, и чрезвычайно высокой производительностью.

    5
    ответ дан 3 December 2019 в 13:24
    поделиться

    httplib2 является другой опцией: http://code.google.com/p/httplib2/

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


    Обновление декабря 2012: Я больше не использую httplib2. теперь использование Запросов: HTTP Для Людей, для любого http с Python.

    2
    ответ дан 3 December 2019 в 13:24
    поделиться

    Поскольку другие ответили, что httplib2 является хорошей альтернативой, потому что он обрабатывает заголовки правильно и может кэшировать ответы, но я сомневаюсь, что это помогло бы в производительности POST.

    Альтернатива, которая могла бы на самом деле дать Вам повышение производительности для POST, особенно в Windows, является новым клиентом HTTP 1.1 в Twisted.web

    1
    ответ дан 3 December 2019 в 13:24
    поделиться

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

    Вы упоминаете отправку большого количества данных по HTTP. inefficieny мог бы быть из-за библиотеки, но HTTP не является самым эффективным протоколом для отправки больших объемов данных. С другой стороны это могло быть простое использование библиотеки (Вы отправляете большую строку или список, или используете поток или генераторы?).

    1
    ответ дан 3 December 2019 в 13:24
    поделиться

    httplib2 является очень хорошим вариантом. Joe Gregorio исправил много ошибок httplib.

    0
    ответ дан 3 December 2019 в 13:24
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: