python - 迭代映射函数python中的参数
问题描述
我需要使用 map 在池中为每个线程在字典中迭代一个值。我们的 dict 如下所示:
params = {'skippages': 0, 'pagesize': 1000}
迭代应如下所示:
params["skippages"] += 1
在我们的程序中插入上面的代码行时,它不会更新函数中的参数,当然这是有道理的,因为函数'journal'已经从部分接收到参数,因此它不会更新参数,因此它使用相同的参数运行日志函数。我们如何迭代每个运行日志函数的线程的参数?
def journal(url, headers, params):
r = requests.get(url=url, headers=headers, params=params)
print(f'url = {url} | params = {params}')
return params
if __name__ == '__main__':
url = 'xxx.xxx'
headers = {'X-AppSecretToken': 'xxx', 'X-AgreementGrantToken': 'xxx', 'Content-Type': "application/json"}
params = {'skippages': 0, 'pagesize': 1000}
func = partial(journal, url, headers, params)
# Ordered thread
with ThreadPool(15) as p:
result = p.map(func, [1, 2, 3, 4, 5])
params["skippages"] += 1 # -----------> doesn't iterate params in journal function
在日志中打印应该而不是输出:params = {'skippages': 0, 'pagesize': 1000}
5x 次,那么它实际上应该输出以下内容。我猜它是线程,它不应该遵循函数中的确切顺序,但是线程完成后的结果,由于映射和顺序/队列,预计会遵循该顺序:
url = "https://xxx.xxx/xxx/xxx" | params = {'skippages': 0, 'pagesize': 1000}'
url = "https://xxx.xxx/xxx/xxx" | params = {'skippages': 1, 'pagesize': 1000}'
url = "https://xxx.xxx/xxx/xxx" | params = {'skippages': 2, 'pagesize': 1000}'
url = "https://xxx.xxx/xxx/xxx" | params = {'skippages': 3, 'pagesize': 1000}'
url = "https://xxx.xxx/xxx/xxx" | params = {'skippages': 4, 'pagesize': 1000}'
解决方案
推荐阅读
- java - AbstractNameValueGatewayFilterFactory 中的@Order 不起作用
- python - 带有 get_full_url 的 Wagtail 正在重定向到非 SSL 链接
- node.js - 使用 createdAt mongodb 获取文档
- javascript - Chartjs 甜甜圈图圆角半甜甜圈
- javascript - 如何在html href标签中插入链接
- python - 如何跳过代码块并转到 selenium 中所需的代码
- python - Python Queue Peek 中的错误
- python - 基于公共密钥合并/加入 csv 文件和 txt 文件的有效方法是什么?
- docker - 如何在 Web 应用程序中使用\连接到 sonatype nexus docker registry v2 api?
- swift - 您如何设置多个查询来限制发送到设备的用户数量,而不是为所有用户运行快照?