@r1dddy4sv

Как параллельно запускать функции из функции python?

У меня есть код:
from multiprocessing import Process
def drop(URL,cardcvc,size1,MIDDLENAME,proxy,MAIL,PASS):
    ###some_code
    print('something')
    ###some_code

def autor():
    ###some code
    mm={'something':'something'}
    for mal in mm:
        Process(target = drop,args=(urlg,cvvg,size1,mid,proxy,mal,mm[mal])).start()

autor()

в котором функция drop должна запускаться неопределенное количество раз одновременно, но в результате код запускает функцию не drop, а autor
понятия не имею из-за чего
буду благодарен любой помощи
  • Вопрос задан
  • 551 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
1. При вызове autorсоздается новый процесс.
2. Процесс читает код, доходит до autor
3. Вызывается autor
4. См пункт 1

Чтобы такого не было, используют if __name__ == '__main__': и создают процессы уже там, чтобы не возникало рекурсии.

from multiprocessing import Process
def drop(URL,cardcvc,size1,MIDDLENAME,proxy,MAIL,PASS):
    ###some_code
    print('something')
    ###some_code

def autor():
    ###some code
    mm={'something':'something'}
    for mal in mm:
        Process(target = drop,args=(urlg,cvvg,size1,mid,proxy,mal,mm[mal])).start()

if __name__ == '__main__':
    autor()


Ну и здесь наверное больше поток подойдет
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@MrBrainop
Начал изучать html, Python и QT Designer
from threading import Thread

def drop(URL,cardcvc,size1,MIDDLENAME,proxy,MAIL,PASS):
    ###some_code
    print('something')
    ###some_code

def autor():
    ###some code
    mm={'something1':'something2'}
    urlg = ''  # У тебя должны бать все эти аргументы для того что бы их передать в функцию( drop ) иначе будет ошибка
    cvvg = ''  # У тебя должны бать все эти аргументы для того что бы их передать в функцию( drop ) иначе будет ошибка
    size1 = '' # У тебя должны бать все эти аргументы для того что бы их передать в функцию( drop ) иначе будет ошибка
    mid = ''   # У тебя должны бать все эти аргументы для того что бы их передать в функцию( drop ) иначе будет ошибка
    proxy = '' # У тебя должны бать все эти аргументы для того что бы их передать в функцию( drop ) иначе будет ошибка
    for mal in mm:
        Thread(target=drop, args=(urlg,cvvg,size1,mid,proxy,mal,mm[mal],)).start() # В конце всех аргументов обязательно запятая должна быть

if __name__ == '__main__':
    autor()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы