training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Как создать параллельное выполнение заданий модуль threading Python

Создано: 29 сентября 2017Автор: Егор Астапов2524 просмотраСложность: легкий

Давно хотел создать выполнение параллельных задач на 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 раз в одну секунду, то вы можете положить сервер и базу данных. Имеет смысл делать рандомную задержку и только потом запускать тяжёлые функции. Тут многое зависит от мощности вашего сервера. Советую размазывать нагрузку по времени.

Комментарии

реклама