Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden

Experimentierumgebung

OS macOS Sierra
CPU 2.3 GHz Intel Core i7
Erinnerung 16 GB 1600 MHz DDR3
Python-Version 2.7.10

Experiment

Vorbereitung

def add(list_x, list_y):                                                        
    list_x = list_x + list_y                                                    
    return list_x   

def inplace(list_x, list_y):                                                    
    list_x += list_y                                                            
    return list_x 

list_a = [[0 for x in range(10000)] for y in range(10000)]
list_b = [[0 for x in range(10000)] for y in range(10000)]

Versuchsergebnis

add(list_a, list_b)
Ausführungszeit: 0.000458
id(list_a): 4391953400 -> 5530614960
------ dis.dis(add) ------
  8           0 LOAD_FAST                0 (list_a)
              3 LOAD_FAST                1 (list_b)
              6 BINARY_ADD          
              7 STORE_FAST               0 (list_a)

  9          10 LOAD_FAST                0 (list_a)
             13 RETURN_VALUE
   
  
inplace(list_a, list_b)
Ausführungszeit: 0.000285
id(list_a): 5530614960 -> 5530614960
------ dis.dis(inplace)  ------
 44           0 LOAD_FAST                0 (list_a)
              3 LOAD_FAST                1 (list_b)
              6 INPLACE_ADD         
              7 STORE_FAST               0 (list_a)

 45          10 LOAD_FAST                0 (list_a)
             13 RETURN_VALUE        

add inplace Ergebnis
Ausführungszeit 0.000458 0.000285 an Ort und Stelle ist schneller
Bytecode Unterschied BINARY_ADD INPLACE_ADD Sie können sehen, dass es sich auch mit dem Bytecode geändert hat
id(list_a) Es gibt eine Veränderung Keine Änderung add wird als neues Objekt erstellt und place wird demselben Objekt ein Wert zugewiesen.

Motivation

Ich war mir der internen Bewegungen beider Parteien nie bewusst gewesen und habe sie selbst untersucht. Solange es mir peinlich ist, wenn ich dachte: "Lass es uns gemeinsam tun!" ... Ungefähr zu dieser Zeit begann ich zu denken, dass ich eine Haltung erlangen sollte, um diese Teile zu verstehen.

Recommended Posts

Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
Ich habe versucht, die Unterschiede zwischen Java und Python aufzuzählen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
[Einführung in Python] Was ist der Unterschied zwischen einer Liste und einem Taple?
Über den Unterschied zwischen "==" und "is" in Python
Hinweise Ich habe nachgeschlagen, um Befehlszeilentools in Python zu erstellen
Ich bin mir über den Unterschied zwischen Modulen, Paketen und Bibliotheken nicht sicher und habe versucht, sie zu organisieren.
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Finde Fehler in Python
Ich wollte das Suchmodul von Ansible2 verwenden, aber es hat einige Zeit gedauert, machen Sie sich also eine Notiz
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python ④ optimiert werden kann
Ich habe versucht herauszufinden, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich möchte nur das 95% -Konfidenzintervall des Unterschieds im Bevölkerungsverhältnis in Python ermitteln
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe Python verwendet, um mich über die Rollenauswahl der 51 "Yachten" in der Welt zu informieren.
Python-Anfänger haben einen Chat-BOT erstellt, also habe ich versucht, zusammenzufassen, wie man es macht
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, die Umrisse von Big Gorilla herauszufinden
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
Ich habe eine Klasse in Python erstellt und versucht, Enten zu tippen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
(Python: OpenCV) Ich habe versucht, einen Wert auszugeben, der den Abstand zwischen Regionen angibt, während das Video in Echtzeit binärisiert wurde.
Unterschied zwischen list () und [] in Python
Unterschied zwischen == und ist in Python
Python-Anfänger versuchten es herauszufinden
Ich möchte den Unterschied zwischen der for-Anweisung in der Python + numpy-Matrix und der Julia for-Anweisung auffangen
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe versucht, eine Funktion zu erstellen, um zu beurteilen, ob die wichtigsten Aktien der Welt Sommerzeit mit Python sind
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, ein missverstandenes Gefangenendilemma in Python zu implementieren
Ich habe versucht herauszufinden, ob ReDoS mit Python möglich ist
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, ein Standbild aus dem Video auszuschneiden
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Als ich versuchte, mithilfe von Anforderungen in Python zu kratzen, war ich süchtig nach SSLError, also einem Workaround-Memo
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
Ich habe versucht, "einen genetischen Algorithmus (GA) in Python zu implementieren, um das Problem des Handlungsreisenden (TSP) zu lösen".
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren