πPython: ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ (Thread)?
ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ Π² Python?
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ° Π² Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ threading
. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
import threading
def my_function():
# Π²Π°Ρ ΠΊΠΎΠ΄ Π·Π΄Π΅ΡΡ
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ°
my_thread = threading.Thread(target=my_function)
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΠΎΡΠΎΠΊ
my_thread.start()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ my_function
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π°Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ°, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ my_function
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»ΠΈ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΠΎΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° start()
.
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ threading
ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΡΠΈΡΠΌΠΎΡΡΠ΅ΡΡΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ
ΠΌΠΎΠ΄ΡΠ»Ρ threading
.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
"ΠΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΡΠΎΠΊ Π² Python"
Π Python ΠΏΠΎΡΠΎΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎΡ Π°ΡΡΠΈΠΊΠ»Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅Ρ Π²Π°ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΡΠΎΠΊ Π² Python ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ.
1. ΠΠΌΠΏΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ° Π² Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠΏΠΎΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ threading Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ time Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ Π² ΠΊΠΎΠ΄Π΅.
import threading
import time
2. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
Π¦Π΅Π»Π΅Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ - ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΏΡΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ 5 Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ°ΡΠ·ΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
def print_numbers():
for i in range(1, 6):
print(i)
time.sleep(0.5)
3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΡΠΎΠΊΠ°
ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ° Thread ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ threading. ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠ΅Π»Π΅Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
thread = threading.Thread(target=print_numbers)
4. ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° start(). ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
thread.start()
5. ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°
ΠΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ join(), ΠΊΠΎΡΠΎΡΡΠΉ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ.
thread.join()
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
import threading
import time
def print_numbers():
for i in range(1, 6):
print(i)
time.sleep(0.5)
thread = threading.Thread(target=print_numbers)
thread.start()
thread.join()
ΠΡΠΎ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΡΠΎΠΊ Π² Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊΠ°ΠΊ ΠΎΡΠΏΡΠ°Π²Π½ΡΡ ΡΠΎΡΠΊΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π°Π΄Π°Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΡΠΎΠΊ Π² Python ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°Π»Π°.