Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Ноя. 21, 2016 14:48:38

Mr.Anderson
Зарегистрирован: 2015-02-06
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

выполнение функций как сторонние процессы

Привет жителям. Вопрос такой.
Вот есть у меня список состоящих из сайтов. Есть функция которая производил различные тесты, над сайтами..
Мне надо реализовать не по очередное, а параллельное выполнение.
Примерно так

 for site in lis_sites:
    и тут надо запускать новый процесс проверяющий функции для каждого нового сайта. При этом не дожидаясь завершения предыдущего.

как сделать такое?
пробовал через multiprocessing, но видимо криво пробовал. Подскажите, как реализовать такое…?

Офлайн

#2 Ноя. 21, 2016 16:07:11

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 2289
Репутация: +  167  -
Профиль   Отправить e-mail  

выполнение функций как сторонние процессы

Посмотрите примеры на основе потоков



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Дек. 11, 2016 19:43:34

john123
Зарегистрирован: 2013-12-22
Сообщения: 56
Репутация: +  7  -
Профиль   Отправить e-mail  

выполнение функций как сторонние процессы

Попробуйте Pulsar. Фреймворк реализует Модель Акторов.
Конкретно для Вас может быть полезен тем, что возьмет на себя всю “подкапотную” коммуникацию мастер-процесса и рабочих (worker processes).

Хотя стандартный питоновский multiprocessing также весьма хорош.

Отредактировано john123 (Дек. 11, 2016 19:43:42)

Офлайн

#4 Дек. 30, 2016 00:26:24

pmus
Зарегистрирован: 2013-04-03
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

выполнение функций как сторонние процессы

async.py:

 from threading import Thread
from functools import wraps
def run(func):
    @wraps(func)
    def async_func(*args, **kwargs):
        func_hl = Thread(target=func, args=args, kwargs=kwargs)
        func_hl.daemon = False
        func_hl.start()
        return func_hl
    return async_func
Делаешь import async, дальше пишешь перед своей функцией @async.run
Всё!

Отредактировано pmus (Дек. 30, 2016 00:27:12)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version