gpt4 book ai didi

python - Ant 模拟: it's better to create a Process/Thread for each Ant or something else?

转载 作者:太空狗 更新时间:2023-10-29 22:16:54 26 4
gpt4 key购买 nike

简单的研究是: Ant 生活模拟

我正在创建一个面向 Anthill 的 OO 结构,一个 Ant 的类和整个模拟器的一个类。

现在我正在集思广益“如何”让 Ant “活”起来......

我知道有这样的项目才刚刚开始,但我正在集思广益,我不是在寻找just-ready-to-eat-dish

真诚地,我必须进行一些测试以了解“什么更好”,AFAIK 线程在 Python 中使用的内存比进程少。

当你开始模拟时,“ Ant ”必须做的只是:随机方向移动,如果他们找到食物 -> 吃/带到蚁丘,如果他们从另一个正在运输食物的蚁丘找到另一只 Ant -> 攻击 -> 收集食物 -> 做必须做的事情......等等......这意味着我必须在 Ant 之间和整个环境中“共享”信息。

所以我改写:最好为每个 Ant 或其他东西创建一个进程/线程?

编辑:由于我的问题“什么更好”,我对收到的所有聪明答案投了赞成票,并且还对它们发表了评论。测试后,我会接受最佳答案。

最佳答案

我建议看一下 stackless . Stackless 引入了 tasklet,这是一种微线程,它允许获得基于线程的编程的好处,而不会出现与传统线程相关的性能和复杂性问题

stackless 的一个可能问题是,据我所知,您需要使用经过修改的解释器或 pypy 才能使用微线程。然而,这可能是值得的,因为有一些公司使用 stackless 取得了巨大的成功(例如,因为它用于 EVE Online)

另请查看 greenlet它还为您提供了一种微线程,无需更换解释器。然而,与无堆栈的 greenlet 相比,它只提供了有限的功能集。

关于python - Ant 模拟: it's better to create a Process/Thread for each Ant or something else?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189398/

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