Давно хотел создать выполнение параллельных задач на Python, но не знал как это сделать. Попалась одна хорошая статья в интернете. После прочтения статьи реализовал многопоточность на Python. Я использовал модуль random для генерации чисел от 1 до 10. О возможностях модуля random вы сможете узнать на странице как сгенерировать последовательность чисел модуль random Python. Модуль time нужен для выполнения задержки. Сама задержка нужна для имитации работы функции.
Рассмотрим пример. Я импортировал класс Thread и переопределил его метод __init__ (конструктор) для принятия данных для аргумента name. Для запуска потока, вам нужно вызывать метод start(). После запуска потока, он автоматически вызовет метод run. Метод run - это выполнение нашего задания (потока).
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import random
import time
from threading import Thread
class MyThread(Thread):
'''
Многопоточность
'''
def __init__(self, name):
'''Инициализация потока, перегружаем метод конструктор'''
Thread.__init__(self)
self.name = name
def run(self):
'''
Запуск потока после временной задержки.
Здесь напишите код своего задания.
Ваше задание может выполняться достаточно долго.
'''
amount = random.randint(1, 10)
time.sleep(amount)
msg = "%s отработало" % self.name
print(msg)
'''
запускаем циклом потоки
'''
for i in range(5):
name = "Задание Thread:{i}".format(i=(i+1))
my_thread = MyThread(name)
my_thread.start()
'''
вывод:
Задание Thread:4 отработало
Задание Thread:5 отработало
Задание Thread:3 отработало
Задание Thread:2 отработало
Задание Thread:1 отработало
'''
Когда вы создадите свой скрипт, то вы должны подумать о том сколько раз в секунду его запускать. Если вы запустите скрипт 100 раз в одну секунду, то вы можете положить сервер и базу данных. Имеет смысл делать рандомную задержку и только потом запускать тяжёлые функции. Тут многое зависит от мощности вашего сервера. Советую размазывать нагрузку по времени.