I’我最近在Python中使用了多处理库,并开始使用共享变量功能。它可以改变我这样的事情 以前的帖子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
从 多处理 进口 池子 从 pymongo 进口 连接 定义 多少(server_number): ”“返回集合中有多少个文档”” c = 连接(“ 192.168.0。” + server_number) #连接到远程曾夫人论坛库 返回 c.我的曾夫人论坛库.我的收藏.计数() 池子 = 泳池(流程=4) 伺服器 = [1,2,3,4] 结果 = 池子.地图(多少,伺服器) #map阶段 池子.关() #减少阶段 结果 = 和(结果) 打印 “您在所有MongoDB服务器上都有{0}个文档!”.格式(结果) |
变得更好:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
从 多处理 进口 值, 池子 从 pymongo 进口 连接 定义 多少(server_number): ”“返回集合中有多少个文档”” c = 连接(“ 192.168.0。” + server_number) #连接到远程曾夫人论坛库 shared_count.值 + = c.我的曾夫人论坛库.我的收藏.计数() #设定 池子 = 泳池(流程=4) 伺服器 = [1,2,3,4] shared_count = 值(“一世”, 0) 结果 = 池子.地图(多少,伺服器) #map阶段 池子.关() 打印 “您在所有MongoDB服务器上都有{0}个文档!”.格式(shared_count) |
从而省去了还原阶段。如果您有一个共享字典,这特别有用。’从多个服务器重新更新。那里’是另一个可能的共享曾夫人论坛类型,称为Array,正如建议的那样,它是共享数组。 注意: 一个陷阱(我爱上了)认为 “一世” in 值(“一世”, 0) 是变量的名称。其实,它的 类型码 代表“integer”.
但是,还有其他方法可以做到这一点,每种方法都有其自身的取舍:
# | 解 | 优点 | 缺点 |
1 | 共享文件 | 易于实施和访问后 | 非常慢 |
2 | 共享的mongoDB文档 | 易于实施 | 缓慢不断查询 |
3 | 多处理值/数组(此示例) | 非常快,易于实施 | 仅在一台PC上,可以’进程被杀死后无法访问 |
4 | Memcached共享价值 | 网络方面对于大型分布式曾夫人论坛库很有用,shared.set()函数已经可用 | TCP可能会使您慢一点 |