<jupyter_start><jupyter_text>`ipyparallel`-Magic<jupyter_code>import ipyparallel as ipp
rc = ipp.Client()
with rc[:].sync_imports():
    import numpy
%px a = numpy.random.rand(2,2)
%px numpy.linalg.eigvals(a)
%px print('hi')
%px %pylab inline
%px plot(rand(100))<jupyter_output><empty_output><jupyter_text>`%%px` Cell Magic `--targets`, `--block` und `--noblock`<jupyter_code>%%px --targets fd00:c2b6:b24b:be67:2827:688d:e6a1:6a3b
print('I am even')
%%px --targets 1
print('I am number 1')
%%px
print('still all by default')
%%px --noblock
import time
time.sleep(1)
time.time()
%pxresult
%%px --block --group-outputs=engine
import numpy as np
A = np.random.random((2,2))
ev = numpy.linalg.eigvals(A)
print(ev)
ev.max()<jupyter_output>[stdout:0] [-0.68780518  0.74951568]<jupyter_text>`%pxresult`<jupyter_code>dview = rc[:]
dview.block = False
%px print('hi')
%pxresult<jupyter_output>[stdout:0] hi
[stdout:1] hi
[stdout:2] hi
[stdout:3] hi
[stdout:0] hi
[stdout:1] hi
[stdout:2] hi
[stdout:3] hi<jupyter_text>`%autopx`<jupyter_code>dview.block=True
%autopx
max_evals = []
for i in range(100):
     a = numpy.random.rand(10,10)
     a = a+a.transpose()
     evals = numpy.linalg.eigvals(a)
     max_evals.append(evals[0].real)
print("Average max eigenvalue is: %f" % (sum(max_evals)/len(max_evals)))<jupyter_output>[stdout:0] Average max eigenvalue is: 10.209420
[stdout:1] Average max eigenvalue is: 10.214184
[stdout:2] Average max eigenvalue is: 10.071618
[stdout:3] Average max eigenvalue is: 10.132674<jupyter_text>`%pxconfig`<jupyter_code>%pxconfig --block
%px print('hi')
%pxconfig --targets fd00:c2b6:b24b:be67:2827:688d:e6a1:6a3b
%px print('hi')
%pxconfig --noblock
%px print('hi')
%pxresult<jupyter_output>[stdout:0] hi
[stdout:2] hi<jupyter_text>Mehrere aktive ViewsMagics von `ipyparallel` sind bestimmten `DirectView`-Objekten zugeordnet. Der aktive View kann jedoch geändert werden mit dem Aufruf der `activate()`-Methode auf einem View.<jupyter_code>even = rc[::2]
even.activate()
%px print('hi')
even.block = True
%px print('hi')<jupyter_output>got unknown result: 98a3ad5c-00fa7f40e334c8a4186d5be5
[stdout:0] hi
[stdout:2] hi<jupyter_text>Wenn ihr die Anischt aktiviert, könnt ihr auch einen Suffix angeben, so dass dieser bei einer ganzen Reihe von Magics zugeordnet werden kann ohne die bereits vorhandenen zu ersetzen.<jupyter_code>rc.activate()
even.activate('_even')
%px print('hi')
%px_even print("We aren’t odd!")<jupyter_output>[stdout:0] We aren’t odd!
[stdout:2] We aren’t odd!<jupyter_text>Dieses Suffix wird am Ende aller Magics angewendet, also z.B.`%autopx_even`, `%pxresult_even` usw.Der Einfachheit halber hat auch `Client` eine `activate()`-Methode, die einen `DirectView` mit `block = True`  erstellt, aktiviert und die neue View zurückgibt.Die anfänglichen Magics, die beim Erstellen eines Clients registriert werden, sind das Ergebnis des Aufrufs `rc.activate()` mit Standardargumenten.  Engines als KernelEngines sind eigentlich dasselbe Objekt wie IPython-Kernels, mit der einzigen Ausnahme, dass Engines eine Verbindung zu einem Controller herstellen, während reguläre Kernels ihre Sockets direkt an Verbindungen zu ihrem Frontend binden.Manchmal werdet ihr zum Debuggen oder Analysieren euer Frontend direkt mit einer Engine verbinden wollen, um eine direktere Interaktion zu ermöglichen. Auch dies könnt ihr tun, indem ihr die Engine anweist, ihren Kernel auch an euer Frontend bindet:<jupyter_code>%px import ipyparallel as ipp; ipp.bind_kernel()
%px %qtconsole<jupyter_output><empty_output><jupyter_text>> **Hinweis:** Seid vorsichtig mit dieser Anweisung, da sie so viele QtConsole startet, wie Engines zur Verfügung stehen. Alternativ könnet ihr euch die Verbindungsinformationen  auch anzeigen lassen und so ermitteln, wie ihr eine Verbindung zu den Engines herstellen könnt, je nachdem, wo sie leben und wo Sie sich befinden:<jupyter_code>%px %connect_info<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12153572336638699, 'fraction_numerical': 0.03686753114670735, 'mean_word_length': 6.579961464354528, 'pattern_counts': {'":': 0, '<': 31, '<?xml version=': 0, '>': 32, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '575445', 'license': 'BSD-3-Clause', 'n_tokens_mistral': 1566, 'n_tokens_neox': 1518, 'n_words': 400, 'path': 'docs/refactoring/performance/ipyparallel/magics.ipynb', 'repo_name': 'veit/jupyter-tutorial-de', 'size': '3861'}