Python #28 - Multithreading

preview_player
Показать описание
In diesem Tutorial zeige ich euch die Grundlagen von Multithreading in Python.

* *Meine Website mit allen anderen Kanälen und Newsletter* *:

_Discord:_

_Unterstützt mich - Danke!:_
Рекомендации по теме
Комментарии
Автор

Das bisher einfachste und beste Beispiel, was ich über Threading, Async und co gesehen habe. Danke :)

electreeks
Автор

Wieso check alles erst, wenn ich mir die Probleme in Python ansehe? Wieso ist Python so einfach? Wieso sind deine Video so geil?

PProgress
Автор

Das ist wirklich ein Riesenvorteil gegenüber JavaScript! JavaScript ist ja SingleThreaded und man muss über Async / Await oder Promises und dann Callbacks oder WebWorkern Multithreading simulieren. Sehr gutes Video!

pfeynman
Автор

Richtig nice! Hab mir jetzt nen Portscanner gebaut, der theoretisch unendlich viele Threads gleichzeitig laufen lassen kann :D

1024 Threads gleichzeitig hat mein Router noch geschafft, mehr hab ich nicht getestet. 45000 Ports in ~15-20 Sekunden...

MrGreen-wcmy
Автор

Wenn Python die einfachste Programmiersprache ist, will ich gar nicht wissen wie C++ ist ... :D

eyriusbacterius
Автор

Grooooßartig. Ich liebe es!!! Endlich der geile Scheiß :D

doktorsalami
Автор

1:14 Wegen des GIL (Global Interpreter Lock) laufen alle Threads auf einem Kern. Dieser Vorteil besteht nur mit dem Multiprozessing Package. Trotzdem vielen Dank für deine Videos!

wilhelmwilhelm
Автор

Bruda Deutsches Tutorial! +Speed fuer mein Programm

Vlad-Ra
Автор

wow seid 1 woche habe ich es nicht 100 % verstanden jetzt sitze ich in italien und schaue es auf meinem handy und endlich verstehe ich es wow

justmatrix-streams
Автор

2:40 Brauchst du in der Zeile eigentlich das thrreading.Thread? Hätte es nicht ausgereicht einfach nur Thread zu schreiben? Und warum schreibst du import threading und nicht beispielsweise from threading import Thread?

Kig_Ama
Автор

Hi,
deine Videos sind sehr gut. Danke dafür.

Ich hätte hier eine Frage.

Soweit ich verstehe entstammt die Methode "start()" der Klasse "threading.Thread". Diese Methode startet die Funktion "run()" also muss immer eine Funktion "run()" in dem Thread enthalten sein. Stimmt das?

Außerdem teilt die Methode "start()" selbsttätig die Funktion einem Prozessorkern zu?

Die Main Methode läuft ebenfalls auf irgendeinem Kern.

Es könnte aber auch sein, dass bei mehreren Methoden die Methoden auf denselben Kernen ablaufen und somit die Prozesse der Reihe nach ablaufen oder?

RT-firb
Автор

Hey Morpheus, ich hoffe du bekommst auch bei so alten Videos noch Fragen mit :)
ich würde um pythons arbeitsweise etwas mehr zu verstehen gerne ein klassisches read-modify-write problem erzeugen. Wie in Java wenn 2 Thread einen static int +1 machen und am ende 200 rauskommen soll, es aber z.b 198 werden.
Bekomme das bei Python irgendwie nicht hin :/

Ps: Geile Videos, werde in Softwaretechnik dieses Semester Haskell lernen und freue mich schon dass du da eine Reihe vorbereitet hast ^^

sgtnik
Автор

Sehr tolles Tutorial, du erklärst wirklich gut und die Beispiele sind verständlich und einfach. Wirklich Top :)
Mich würde interessieren, wie ich ein Skript in Loop betreibe, z.B. einen Durchlauf pro Sekunde.
Eine Whileschleife mit True finde ich pers. unschön, vll. geht das eleganter..

DAGSH
Автор

Hi danke für dein Video hat auf jeden fall schon mal sehr geholfen.

Ich habe jetzt ein etwas Komplexere Klasse (Klasse_A) die mir etwas Physikalisches berechnet. Zusätzlich habe ich mir eine weitere Klasse (Klasse_B) fürs threading programmiert:


Klasse_B
"
class
"""Description:
Klasse die eine übergebene Funktion als Thread verarbeitet.

Gebaeude enhält folgende Methoden:
run: Run startet die übergebene Funktion.
"""

def __init__(self, ID, func, dict_parameter, laenge_items=None):

self.ID = ID
self.calc_func = func
self.dict_parameter = dict_parameter
self.int_laenge_items = laenge_items

def run(self):
"""Description:
Methode stößt die Berechnung der übergebenen Funktion an.

Input:
Kein Input

Output:
Kein Output
"""
print("Thread Nr. " + str(self.ID) + " ist gestartet")

print("Thread Nr. " + str(self.ID) + " ist beendet")

if self.int_laenge_items:
printProgressBar(self.ID + 1, self.int_laenge_items, prefix="Ladebalken", suffix="100 %", length=50)

"

Diese benutzte ich an mehreren stellen in Klasse_A die Klasse_B um Prozesse zu paralesieren.
Ich habe immmer dran gedacht die threads zu joinen mit:

"
for obj_Prozess_Thread in list_threads:
obj_Prozess_Thread.join()
"

Ich vermute jetzt das es daran liegt das ich zu viele Threads parallel offen habe, die CPU ist allerdings nicht ganz ausgelastet und bewegt sich in der Spitze bei ca. 30%.

Schon mal einer eine ähnliches Problem gehabt?

Alex.U.H.
Автор

Also Ich hab versucht zwei verschiedene text dateien gleichzeitig mit viel text zu füllen und ohne multithreading war python schneller fertig. Sollte es nicht beim multithreading schneller sein well die text dateien parallel gefüllt werden?

Hmmmmgh
Автор

Wegen dem global Interpreter lock (GIL) können Threads nicht auf Kerne aufteilt werden. Es ändert sich in python 12 A Per-Interpreter GIL PEP 684 und in python 13 PEP 554 – Multiple Interpreters in the Stdlib

tamptus
Автор

ich komm mit diesen ganzen import Sachen bisschen durcheinander. Wie kann ich wissen, welche es da gibt usw?

magictime
Автор

Threading kann man z.B super mit sockets kombinieren :)!

easypy
Автор

Sag Mal, welche IDE benutzt du eigentlich?

Hätte auch gern das mit den automatischen Vorschläge an Funktionen, aber bei der Python IDE hat das bei mir Macken - Mal kommt sowas, Mal nicht.

xXSkyWalkerXx
Автор

Hallo The Morpheus Tutorials,
erst einmal vielen Dank für deine zahlreichen guten Tutorials für Python! Die haben mir schon oft weitergeholfen.
Könntest du deine Python-Reihe um ein Video zur Bibliothek *Asyncio* erweitern?
Liebe Grüße!

executeOrder