猿问

如何在 Python 中发送多个线程?

从输入发布数据时,我希望能够接收内容列表。输入在一个文本文件中,该文件将在 python 中打开。为了加快进程,我想增加一次可以发送的线程数。我怎么能做到这一点,这是我在说什么的粗略想法:


import requests


userdata = open("data.txt", "r")

usercodes = [x.strip() for x in userdata]


for i in range(len(usercodes)):

    thread_one = requests.post(url='https://test.com/input', params=usercodes[i])

    thread_two = requests.post(url='https://test.com/input', params=usercodes[i+1])

    thread_three = requests.post(url='https://test.com/input', params=usercodes[i+2])

我希望所有线程同时运行,在这里程序将一个接一个地执行请求。


海绵宝宝撒
浏览 148回答 3
3回答

跃然一笑

import requestsfrom multiprocessing import Pooldef make_request(usercode):    requests.post(url='https://test.com/input', params=usercode)if __name__ == '__main__':    userdata = open("data.txt", "r")    usercodes = [x.strip() for x in userdata]    with Pool(multiprocessing.cpu_count()) as p:        print(p.map(make_request, usercodes))    p.close()

临摹微笑

与concurrent.futures.ThreadPoolExecutor:from concurrent.futures import ThreadPoolExecutorfrom functools import partialimport requestsuserdata = open("data.txt", "r")usercodes = (x.strip() for x in userdata)  # keep as generatorwith ThreadPoolExecutor() as pool:    pool.map(partial(requests.post, 'https://test.com/input'), usercodes)    userdata.close()   # closing the input file

肥皂起泡泡

Async 绝对是你的朋友。from gevent import joinall, spawn, monkeygevent.monkey.patch_all()import requestsuserdata = open("data.txt", "r")usercodes = [x.strip() for x in userdata]send_url = 'https://test.com/input'threads = []def send(usercode):   requests.post(url=send_url, params=usercode)for code in usercodes:    threads.append(spawn(send, code))joinall(threads)
随时随地看视频慕课网APP

相关分类

Python
我要回答