голосование
PHP
jQuery
Firebird
BASH
HTML
Ресурсы
GIT
SEO
Oracle
Python
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

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

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

просмотры: 44, уровень: лёгкий уровень, рейтинг: 0, дата: 2017-09-29 11:00:09
проголосовать:

Комментарии:






поиск
реклама
банеры
домен RU всего за 99 рублей
http://www.2domains.ru домен RU домен RU всего за 99 рублей
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
https://my.colobridge.net/aff.php?aff=047 серверы vps/vds облачный vps/vds сервер colobridge от 9,9 евро в месяц