[PYTHON] Sammle Katzenbilder in Sekundenschnelle und ziele auf den Stamm der Cat Hills

Überblick

Das Drehbuch, das ich neulich gemacht habe Der Feed-Parser nimmt das Katzenbild automatisch auf Dank dessen schreiten die Tage fort, an denen die Sammlung von Katzenbildern fortschreitet ...

Die Ausführungsgeschwindigkeit ist jedoch langsam. Nicht schnell ... Dieses Skript ist nicht schnell genug. Also werde ich versuchen, es zu ändern, um zu sehen, ob es schneller gemacht werden kann.

Analysieren Sie zunächst die aktuelle Situation

Vorerst habe ich gemessen, wie langsam das aktuelle Skript ist. Unten finden Sie eine Quelle, die Messlogik enthält.

get_cat.py


# -*- coding: utf-8 -*-
import feedparser
import urllib
import os
import  time

def download_picture(q, count=10):
    u"""Holen Sie sich Zählbilder von q."""
    count = str(count)
    feed = feedparser.parse("https://picasaweb.google.com/data/feed/base/all?q=" + q + "&max-results=" + count)
    pic_urls = []
    for entry in feed['entries']:
        url = entry.content[0].src
        if not os.path.exists(os.path.join(os.path.dirname(__file__), q)):
            os.mkdir(os.path.join(os.path.dirname(__file__), q))
        urllib.urlretrieve(url, os.path.join(os.path.dirname(__file__), q, os.path.basename(url)))
        print('download:' + url)

if __name__ == "__main__":
    time1=time.time()
    download_picture("cat", 10)
    time1_2=str(time.time()-time1)
    print("complete!("+time1_2+")")

Ergebnis


complete!(6.05635690689)

Das Herunterladen von 10 Kopien dauerte 6 Sekunden. Ich habe es mehrmals versucht, aber es waren immerhin ungefähr 6 Sekunden. Jetzt können Sie nur noch 14400 Exemplare innerhalb von 24 Stunden herunterladen. Es ist alles andere als ideal.

httplib2 Aus dem Gerücht des Windes erfuhr ich von der Existenz einer Bibliothek namens httplib2. Vielmehr scheint dieser Standard zu sein als der Standard. Funktionen von httplib2 (↓).

Ist es nicht wunderbar? Lass es uns jetzt benutzen.

$ sudo pip install httplib2

Schnell installieren. Und das Programm reparieren.

get_cat2.py


# -*- coding: utf-8 -*-
import feedparser
import httplib2
import os
import time


def download_picture(q, count=10):
    u"""Holen Sie sich Zählbilder von q."""
    count = str(count)
    feed = feedparser.parse("https://picasaweb.google.com/data/feed/base/all?q=" + q + "&max-results=" + count)
    pic_urls = []
    http = httplib2.Http(".chache")
    for entry in feed['entries']:
        url = entry.content[0].src
        open(os.path.join(os.path.join(os.path.dirname(__file__), q),os.path.basename(url)),'wb').write(http.request(url)[1])
        print('download:' + url)

if __name__ == "__main__":
    time1=time.time()
    download_picture("cat", 10)
    time1_2=str(time.time()-time1)
    print("complete!("+time1_2+")")

Ein seltsamer Ort.

Lass es sofort laufen!

Ausführungsergebnis


Zunächst das ursprüngliche Programm. Gut so.
complete!(5.79861092567)

Verbesserte Version. Hmm?
complete!(5.06348490715)
Die zweite verbesserte Version. Oh...
complete!(1.20627403259)
Die dritte verbesserte Version. Uooo!
complete!(0.768098115921)

Es ist schnell! Das ist praktisch genug. Es ist keine Lüge, die Geschwindigkeit pro Sekunde zu sagen.

** Fazit: httplib2 verbessert die Sammlung von Katzenbildern. ** ** **

Recommended Posts

Sammle Katzenbilder in Sekundenschnelle und ziele auf den Stamm der Cat Hills
Zusammenfassung des mit einer Geschwindigkeit von einer Sekunde durchgeführten Bildcrawls
Zur Zeit derjenige, der mit Django im Handumdrehen eine Homepage erstellt und diese auf Heroku veröffentlicht (Windows-kompatibel)
Ich habe die Geschwindigkeit der Listeneinschlussnotation für und während mit Python2.7 gemessen.
Die zweite Nacht der Runde mit für
Ich möchte dem Anfang einer WAV-Datei 1 Sekunde lang Stille hinzufügen
Vergleichen Sie die Geschwindigkeit von Python Append und Map
Berücksichtigung der Stärken und Schwächen von Python
Erstellen Sie einen Datensatz mit Bildern, die für das Training verwendet werden sollen
Werfen Sie einen Blick auf die Verarbeitung von LightGBM Tuner
Erstellen Sie einen Stapel von Bildern und blasen Sie sie mit ImageDataGenerator auf
Aufgaben zu Beginn eines neuen Python-Projekts
Die Geschichte der Schaffung eines "Geist- und Zeit-Chatrooms" exklusiv für Ingenieure im Unternehmen
Geben Sie dem Befehl history ein Datum und eine Uhrzeit ein und sammeln Sie Verlaufsdateien aller Benutzer mit einem Skript
Wie man einen bestimmten Prozess am Anfang und Ende der Spinne mit Scrapy einfügt