Запуск нескольких функций

Думаю, я запуталась, как мне к этому подойти.

У меня есть ряд функций, которые я использую для взаимодействия с API, например получение идентификатора продукта, обновление сведений о продукте, обновление инвентаря. Эти вызовы должны выполняться один за другим, и все они заключены в одну функцию api.push ().

Скажем, мне нужно запустить api.push () 100 раз, 100 идентификаторов продуктов.

Я хочу запустить несколько api.push одновременно, чтобы ускорить обработку моего файла. Например, допустим, я хочу запустить 5 за раз.

Я не понимаю, многопроцессорность это или многопоточность, или ни то, ни другое. Я пробовал оба, но они, похоже, не работали, например, у меня есть этот

jobs = []
for n in range(0, 4):
    print "adding a job %s" % n
    p = multiprocessing.Process(target=api.push())
    jobs.append(p)

# Starts threads
for job in jobs:
    job.start()

for job in jobs:
    job.join()

Любое руководство будет оценено

Спасибо

0
0
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прочтите Документ Python и изучите глобальная блокировка интерпретатора, чтобы понять, следует ли вам использовать многопроцессорность или многопроцессорность в вашей ситуации.

Я не знаю, как работает api.push, но учтите, что вы должны передать ссылку на функцию multiprocessing.Process. Использование p = multiprocessing.Process(target=api.push()) передаст все, что возвращает api.push(), в качестве функции, вызываемой в подпроцессах.

если api.push - это функция, вызываемая в подпроцессе, вам следует использовать p = multiprocessing.Process(target=api.push), поскольку он передает ссылку на функцию, а не ссылку на результат функции.

Вот и все, у меня были скобки. Спасибо

mozman2 31.10.2018 17:01

Другие вопросы по теме