首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多处理时序不一致性

多处理时序不一致性
EN

Stack Overflow用户
提问于 2016-11-17 14:32:05
回答 1查看 176关注 0票数 0

我有大约100个流程。每个过程包含10个输入(逻辑表达式),每个过程的任务是找到求解每个逻辑输入的最快的启发式算法(我有大约5个启发式算法)。

当我单独运行每个进程时,结果与并行运行所有进程时不同(使用pythonp1.py&pythonp2.py &…)。。)。例如,当单独运行进程时,输入1(在p1中)发现第一个启发式算法是最快的方法,但是当并行时,相同的输入发现第五个启发式算法更快!

原因是否是CPU会在并行进程之间切换,并导致时序混乱,从而无法给出每个启发式算法用于解决输入问题的正确时间?

解决办法是什么?减少进程数到一半可以减少错误结果吗?(我在服务器上运行我的程序)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-17 19:44:22

操作系统必须将所有进程安排在数量小得多的CPU上。为了做到这一点,它在每个CPU上运行一个进程,时间很短。之后,操作系统对进程进行调度,让其他进程运行,以便给进程公平的运行时间。因此,每个进程都必须等待CPU上一个正在运行的槽。这些等待时间取决于等待运行的其他进程的数量,而且几乎不可预测。

如果您使用时钟时间进行测量,等待时间将污染您的测量。为了进行更精确的测量,您可以问操作系统进程使用了多少CPU时间。函数时间()就是这样做的。

进程之间的切换需要时间。访问相同资源的多个进程(文件、硬盘、CPU缓存、内存、.)要花时间。对于与CPU绑定的进程,具有比CPU多数量级的运行进程将减慢执行速度。通过启动比CPU数量稍少的进程,您将获得更好的结果。备用CPU仍可用于操作系统或其他一些无关程序所需的工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40657549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档