我有一个for循环,该循环将从一组URL中获取一个URL,然后延伸到该URL并执行其他操作,但是这是永远的事情,因此我认为我可以通过一些多处理来加快速度,但是却很费劲这样做。
感谢您的协助。
def accessAndSaveFiles(urlSet, user, verboseFlag):
with multiprocessing.Pool(os.cpu_count()) as pool:
pool.starmap(processURL, zip(itertools.repeat(urlSet), user, verboseFlag))
def processURL(url, user, verboseFlag):
filePath = some_path
img_data = requests.get(url, allow_redirects=True)
open(filePath, 'wb').write(img_data.content)
def main():
...
accessAndSaveFiles(urlSet, user, verboseFlag)
...
我在“ pool.starmap(processURL,zip(itertools.repeat(urlSet),user,verboseFlag))”行上收到一条错误消息,提示“ TypeError:zip参数#3必须支持迭代”。我不想遍历此项目,我只想每次发送相同的值。
假设urlset是可迭代的,则应使用
pool.starmap(processURL, zip(urlSet, repeat(user), repeat(verboseFlag)))
这是因为您要遍历urlset,但每个processURL实例具有相同的用户和verboseFlag(因此,重复)
作为参考,您应该查看Python multiprocessing pool.map中的多个参数
迭代结束时zip的输出应类似于
[('www.google.com','user1',True),('www.goodle.uk','user1',True),]
为了pool.starmap
使它有意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句