717
25.8
Lösungen
Erläuterung 2:
#1: Gibt den Wert True zurück, wenn der im Argument übergebene Punkt zum Stern
gehört.
#2: Liefert die Helligkeit des Sterns als Anzahl der Lichtpunkte auf dem Foto.
#3: Das Argument dot ist ein Tupel mit den Koordinaten eines Punktes. Die Methode gibt
einen Stern zurück, der diesen Punkt enthält, sofern ein solcher Stern existiert. Anderen-
falls wird nichts zurückgegeben, also das leere Objekt
None.
#4: Es ist praktischer, zunächst eine Funktion für das Testen zu definieren. Dem Profiler
braucht dann später nur ein String mit dem Funktionsaufruf übergeben zu werden (
#5).
Der Funktion
test() wird als Parameter ein Sky-Objekt übergeben. Da in der Test-Funktion
kein
Sky-Objekt instanziiert wird, fällt der Prüfbericht kürzer und übersichtlicher aus. Uns
geht es ja hier nur um die Methode
getStar().
b) Die Methode
Stars.getStar() ist so schnell, dass man sie (bei kleineren Bildern) sehr
oft aufrufen muss, um einen Eindruck von der Laufzeit zu bekommen. Im (hier gekürzten)
Bericht des Profilers erkennt man, dass bei dem Testlauf im Mittel weniger als eine Millise-
kunde zur Ausführung benötigt wurde.
# Testen
def test(sky): #4
import random
for i in range(1000):
position = (random.randint(0, 100),
random.randint(0,100))
sky.getStar(position)
if __name__ == "__main__":
import profile, Tkinter
window = Tkinter.Tk()
image = Tkinter.PhotoImage(file="bilder/gr_wagen.gif")
sky = Sky(image)
profile.run("test(sky)") #5
128005 function calls in 1.069 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall (function)
121000 0.471 0.000 0.471 0.000 (contains)
1000 0.507 0.001 0.978 0.001 (getStar)

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.