Dies ist ein Memo für die Arbeit zu Hause oder bei Starbucks mit iPython Notebook, einer Weboberfläche von Python. Ich werde es aktualisieren, wenn ich Lust dazu habe.
Sie können jederzeit mit Starbucks mit Forschung und Entwicklung beginnen, indem Sie das Notebook auf Ihrer Workstation starten. Die Einführung finden Sie unter hier . `c.IPKernelApp.pylab = 'inline'
`ist besonders wichtig, damit das, was Sie mit matplotlib zeichnen, auf Ihrem Notizbuch angezeigt werden kann.
Erstellen Sie für jeden Test ein neues Notizbuch, damit Sie nicht verwirrt werden. Die folgende Zellmagie ist nützlich zum Debuggen.
`% time
`Zeit messen `% debug
`Starten Sie den DebuggerNachdem das Programm mit einem Fehler gestoppt wurde, führen Sie "% debug" in der entsprechenden Zelle aus, um ipdb zu starten
Es gibt verschiedene Methoden. Dieser Bereich ist ebenfalls hilfreich Ich werde.
1 multiprocessing.Pool
Weitere Informationen finden Sie in diesem Bereich unter
from multiprocessing import Pool
p = Pool(n_cores)
p.map(func, [arg list])
p.close()
Sie können so parallel rechnen. Es ist zu beachten, dass während der parallelen Berechnung![Kobito.1408940334.347506.png](https://qiita-image-store.s3.amazonaws.com/0/69/1461469f-0ba1-0986- 0431-7a8f0e745f23.png "kobito.1408940334.347506.png ") Wenn Sie hier die Suspend-Taste oder die Neustart-Taste drücken, wird der Arbeiter normalerweise zu einem Zombie. In diesem Fall versuche ich, alles mit `` `pkill Python``` usw. zu töten und starte dann das Notebook erneut.
2 IPython.parallel
Da iPython selbst über ein Framework für die parallele Berechnung verfügt, ist dies eine Möglichkeit, es zu verwenden. Starten Sie zuerst das iPython-Notizbuch, wählen Sie im ersten angezeigten Dashboard die Registerkarte Cluster aus und dann Geben Sie hier die gewünschte Anzahl von Arbeitern in Anzahl der Motoren ein und starten Sie. Schreiben Sie im Programm wie folgt.
from IPython.parallel import Client
def test(x):
u'''
Parallel berechnete Funktionen
'''
return x **2
cli = Client()
dv = cli[:]
x = dv.map(test, range(100))
result = x.get()
Wenn Sie dieselbe Funktion mehrmals parallel ausführen möchten, während Sie die Argumente ändern, sind die Methoden 1 und 2 wirksam. Wenn Sie jedoch ein großes Programm parallel ausführen möchten, ist die Parallelisierung durch Hintergrundverarbeitung mit einem Shell-Skript einfacher. Mit anderen Worten, lassen Sie uns ein Shell-Skript ausführen, das mehrere Python-Programme schreibt. Py arg1 arg2 ... & `. Sie können das Bash-Skript in der Zelle des Notizbuchs ausführen, indem Sie den Befehl
%% bash` `` verwenden. Sie sagten: "Ich habe bisher über iPython-Notizbuch gesprochen, aber es ist doch eine Shell!" Ich werde. Zum Beispiel
Wenn Sie dies ein wenig ändern,
Sie können einfach (?) So parallelisieren. Wenn Sie Befehlszeilenargumente in Python verwenden möchten, erstellen Sie einen `if (__ name__ == '__ main __'):`
Block und lesen Sie ihn aus `` `sys.argv```.
Wenn es sich um ein kleines Programm handelt, können Sie es auf ein iPython-Notebook schreiben. Wenn das Programm jedoch unübersichtlich wird, ist es besser, es als .py-Datei zu erstellen, sodass Sie zwangsläufig mit SSH in die Workstation eintauchen müssen. .. Ich verwende Secure Shell ( Link ) ..
Ich verwende Canopy . OpenCV ist auch praktisch, da es mit einem Klick eingefügt werden kann. Sie können Pakete vom Terminal aus mit dem Befehl `` `enpkg``` verwalten (<a href = "https://support.enthought.com/entries/22415022-Using-enpkg-to-update-Canopy-EPD") -packages "target =" _ blank "> link ). Mac-Benutzer sind möglicherweise süchtig nach Schlüsselbundproblemen, also <a href = "http://stackoverflow.com/questions/14719731/keychain-issue-when-trying-to-set-up-enthought-enpkg-on -mac-os-x "target =" _ blank "> Hier prüfen .
Recommended Posts