• Специальный функционал, который позволяет выполнять код параллельно друг другу

Два потока: неосновной и основной

import time # Импортируем библиотеку, которая может "стопить" нашу программу
import threading # Импортируем библиотеку, которая работает с потоками
 
def sleepTime(wait, name):
	print("Выводим текст: {}".format(name))
	time.sleep(wait) # Функция, которая позволяет ввести програму в сон на какое-то количество секунд
	print("Выводим текст повторно: {}".format(name))
td = threading.Thread(target=sleepTime, name='SleepTime', args=(10, 'SleepTime')) # target - это функция, к которой мы обращаемся. Первый параметр в args - это время, второй параметр - это название функции
td.start()
td.join() # Изначально завершается неосновной поток td, потом стартует основной поток 
print("Привет, мир!") 

Один поток

import time # Импортируем библиотеку, которая может "стопить" нашу программу
import threading # Импортируем библиотеку, которая работает с потоками
 
def sleepTime(wait, name):
	print("Выводим текст: {}".format(name))
	time.sleep(wait) # Функция, которая позволяет ввести програму в сон на какое-то количество секунд
	print("Выводим текст повторно: {}".format(name))
sleepTime(10, 'SleepTime') # Сначала выводится первый кусок с "Выводим текст", через 10 выводится кусок повторно и "Привет, мир!"
print("Привет, мир!") 

С циклом for

import time # Импортируем библиотеку, которая может "стопить" нашу программу
import threading # Импортируем библиотеку, которая работает с потоками
 
def sleepTime(wait, name):
	print("Выводим текст: {}".format(name))
	time.sleep(wait) # Функция, которая позволяет ввести програму в сон на какое-то количество секунд
	print("Выводим текст повторно: {}".format(name))
 
startTime = time.time()
t_list = [] # Создаём пустой список, чтобы посчитать время за каждый поток
 
for x in range(5):
	name = 'Sleep time ' + str(x)
	print("{} был запущен".format(name))
	td = threading.Thread(target=sleepTime, name='name', args=(10, 'name'))
	td.start()
	t_list.append(td) # Добавляем td в список с помощью append
 
for y in t_list:
	y.join() # Задаём то, что подпроцессы должны выполняться непараллельно основному потоку 
 
endTime = time.time()
 
print("Время обработки", (endTime - startTime), "секунд")