Почему многопоточность в моем коде неэффективна? - PullRequest
0 голосов
/ 05 августа 2020

Итак, мой код получает имена файлов из filenames.txt, а затем отправляет запрос с файлом и получает ответ.

По некоторым причинам он загружает его несколько раз для одного файла, и я не могу понять почему.

f = open('filenames.txt','r')
results = [x.strip() for x in f.readlines()]
def makerequest(files):
    for filename in results:
        files = {'file': open(filename, 'rb')}
        url = 'https://www.google.com/'
        r = requests.post(url,headers=headers2,files=files,cookies=cookies1)
        print(r.text)
processes = []
pool = multiprocessing.dummy.Pool(10)
pool.map(makerequest, results)
pool.close()
pool.join()

Я хочу, чтобы каждый поток отправлял запрос с другим именем файла, например

Поток 1 загружает файл 1.txt

Поток 2 загружает файл 2. txt

1 Ответ

0 голосов
/ 05 августа 2020

Вы отправляете одно имя файла в качестве аргумента в def makerequest(files):, но никогда не используете его, а используете for -l oop для работы со всеми именами файлов в каждом процессе. Вам нужно удалить for -l oop.

def makerequest(filename):
    files = {'file': open(filename, 'rb')}
    url = 'https://www.google.com/'
    r = requests.post(url, headers=headers2, files=files, cookies=cookies1)
    print(r.text)
...