1. 问题描述
多线程获取异步结果时,报错,RuntimeError:dictionary changed size during iteration
2. 解决
网上资料大致有两种方法:1.将字典项处理成keys的list(不适合条件查询)2.使用return
根据自己的需求(有条件的返回),简化代码记录如下:
1)返回字典中的值
import time
ret_result = {
'SID_12580100001': {
'data': '回报内容1',
'time': time.time()
},
'SID_12580100002': {
'data': '回报内容2',
'time': time.time()
}
}
def get_result(req_param):
global ret_result
for key, value in ret_result.items():
if key == req_param:
ret_result.pop(key)
return value
if __name__ == '__main__':
req_param = 'SID_12580100001'
a = get_result(req_param)
print(a)
2)返回删除键值对后的字典
import time
ret_result = {
'SID_12580100001': {
'data': '回报内容1',
'time': time.time()
},
'SID_12580100002': {
'data': '回报内容2',
'time': time.time()
}
}
def get_result(req_param):
global ret_result
for key, value in ret_result.items():
if key == req_param:
ret_result.pop(key)
break
return ret_result
if __name__ == '__main__':
req_param = 'SID_12580100002'
a = get_result(req_param)
print(a)
闻过则喜,欢迎交流……
参考链接:https://blog.csdn.net/weixin_37008013/article/details/89492885/