|  |      1vipppppp      2019-01-28 16:32:10 +08:00  1 你这样鬼知道什么问题啊 看报错就是你进行迭代的时候对字典进行了增加或者减少操作, 例如: a = {1: 2, 3: 4, 5: 6, 7: 8} for x in a: a.pop(1) 就会报这个错 | 
|  |      2HypoChen      2019-01-28 16:32:19 +08:00  1 字面上看,像是在 for 循环的时候,字典被修改了(新增? pop ?) | 
|  |      3janxin      2019-01-28 16:33:02 +08:00  1 先拷贝一份再使用? and 不要随意修改多个线程访问的数据 | 
|  |      4HypoChen      2019-01-28 16:33:47 +08:00  1 建议: 1. 如果经常修改,不要用全局的字典(请求间隔离) 2. 如果需要共享,建议加锁 | 
|      5neoblackcap      2019-01-28 17:28:50 +08:00  1 我初步估计就是如 4 楼说的一样,用了一个字典作为全局变量,一并发就挂了。最无脑就是加锁罗 | 
|  |      6pythongo      2019-01-28 17:37:08 +08:00  1 这不是 py 的锅,我不背 | 
|      7Philippa      2019-01-28 17:58:40 +08:00 via Android  1 这是多进程字典被修改时不要去 for 它,你可以用 multiprocessing Manager dict 复现这个问题。要么加锁要么使用前弄个 copy。而且边写边读很难 debug | 
|      8lynskylate      2019-01-28 20:04:17 +08:00 via Android  1 经典的迭代器失效问题,如上加锁或者局部字典 | 
|  |      9XxxxD      2019-01-28 20:33:19 +08:00  1 根据楼上 for i in x.copy(): | 
|  |      10334862132 OP @lynskylate   谢谢  说到迭代器失效  我发现我代码里面有字典用字典生成式写的  字典生成式好像引用了迭代器原理  我已经放假了   等回去后把字典生成式替换了试一下 |