为什么多线程在我的代码中效率不高?

Why MultiThreading is not efficient in my code?

所以我的代码从 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

您在 def makerequest(files): 中将单个文件名作为参数发送,但您从未使用过它,而是使用 for-loop 来处理每个进程中的所有文件名。您必须删除 for-loop.

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)