Выполните один python метод несколько раз одновременно - PullRequest
0 голосов
/ 27 мая 2020

У меня есть метод, который принимает один аргумент и отправляет его на хост.

def fts(searchstring):
    search_string="\""+searchstring+"\""
    headers = {'Content-Type': 'application/json',}
    data = '{ "explain": true,"fields": ["*"],"highlight": {},"query": { "query": '+search_string+'},"size":0}'
    response = requests.post('hostname', headers=headers, data=data, auth=('uname', 'password'))
    if response.status_code != 200:
        raise Exception("{} - {}".format(response.status_code, response.text))
    print(response.json())

Я хочу запустить этот метод в нескольких процессах одновременно с разными аргументами. Это возможно? Я пробовал использовать многопроцессорность, но не смог. Спасибо

1 Ответ

1 голос
/ 29 мая 2020

Код pool.map(fts, searchstring) будет работать одновременно, но он будет рассматривать searchstring как список символов и отправлять каждый отдельный символ на другой fts

Вам нужен список со всеми строками

all_results = pool.map(fts, [searchstring1, searchstring2, searchstring3, ...])

BTW: Если вам нужно будет отправить больше аргументов, тогда вам понадобится список с кортежами или подсписками.

all_results = pool.map(fts, [(searchstring1, param1), (searchstring2, param2), ...])

и определите функцию как

def fts(args):
    searchstring, param = args
...