加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

有没有办法使用伪随机序列或散列函数模拟队列的python random.sh

发布时间:2020-12-20 13:29:14 所属栏目:Python 来源:网络整理
导读:我正在构建一个基于任务队列的应用程序:它为多个异步连接的客户端提供一系列任务.扭曲是必须以随机顺序提供任务. 我的问题是我现在使用的算法计算成本很高,因为它依赖于许多大型查询和数据库传输.我有一个强烈的预感,有一个更便宜的方法来实现相同的结果,但
我正在构建一个基于任务队列的应用程序:它为多个异步连接的客户端提供一系列任务.扭曲是必须以随机顺序提供任务.

我的问题是我现在使用的算法计算成本很高,因为它依赖于许多大型查询和数据库传输.我有一个强烈的预感,有一个更便宜的方法来实现相同的结果,但我不能完全看到解决方案.你能想到解决这个问题的聪明方法吗?

这是我现在使用的(计算上很昂贵的)算法:

当客户端查询新任务时……

>查询数据库中的“未完成”任务
>将所有任务放入列表中
>随机播放列表(使用random.shuffle)
>将第一个任务标记为“进行中”
>将任务参数发送到客户端以完成

当客户端完成任务时……

6A.记录结果并将任务标记为“已完成”.

如果客户未能在截止日期前完成任务……

6B.将任务重新标记为“未完成”.

似乎我们可以通过用伪随机序列或散列函数替换步骤1,2和3来做得更好.但我无法弄清楚整个解决方案.想法?

其他考虑:

>如果它很重要,我将使用python和mongodb来完成所有这些. (Mongodb没有一些聪明的“使用find_one来有效地返回随机匹配条目”的用法,是吗?)
>“队列”一词有点误导.所有任务都存储在mongodb中单个集合的子字段中.集合中的长度(任务总数)是已知的并且在开始时是固定的.
>如果有必要,可以多次分配相同的任务,只要事件很少发生.但是这种情况需要非常罕见,因为完成每项任务的成本很高.
>我在每个客户端都有识别信息,因此我们确切知道是谁发起了每个任务请求.

解决方法

有一种从MongoDB获取随机文档的简单方法!

见Random record from MongoDB

如果您不希望两次选择任务,则可以将任务标记为活动而不选择它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读