gpt4 book ai didi

python - 有没有办法使用伪随机序列或哈希函数模拟队列的 python random.shuffle?

转载 作者:可可西里 更新时间:2023-11-01 09:15:49 24 4
gpt4 key购买 nike

我正在构建一个基于任务队列的应用程序:它为多个异步连接的客户端提供一系列任务。不同之处在于,任务必须以随机顺序提供

我的问题是我现在使用的算法在计算上非常昂贵,因为它依赖于许多大型查询和从数据库传输。我有一种强烈的预感,有一种更便宜的方法可以达到相同的结果,但我不太清楚解决方案。你能想出一个聪明的办法来解决这个问题吗?

这是我现在使用的(计算量大的)算法:

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

  1. 在数据库中查询“未完成”的任务
  2. 将所有任务放在一个列表中
  3. 打乱列表(使用 random.shuffle)
  4. 将第一个任务标记为“进行中”
  5. 将任务参数发送给客户端完成

当客户端完成任务时...

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

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

6b。将任务重新标记为“未完成”。

似乎我们可以通过用伪随机序列或哈希函数替换步骤 1、2 和 3 来做得更好。但我不太清楚整个解决方案。想法?

其他注意事项:

  • 以防万一,我使用 python 和 mongodb 来完成所有这些工作。 (Mongodb 没有一些聪明的“使用 find_one 有效地返回随机匹配条目”的用法,是吗?)
  • 术语“队列”有点误导。所有任务都存储在 mongodb 中单个集合的子字段中。集合中的长度(任务总数)在一开始就已知并固定。
  • 如果有必要,可以多次分配同一任务,只要这种情况很少发生即可。但这种情况应该非常少见,因为完成每项任务的成本都很高。
  • 我有每个客户的身份信息,所以我们确切地知道每个任务请求是谁发起的。

最佳答案

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

参见 Random record from MongoDB

如果您不希望某个任务被选中两次,您可以将该任务标记为事件状态而不选择它。

关于python - 有没有办法使用伪随机序列或哈希函数模拟队列的 python random.shuffle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11671490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com