用 Python 做数学题,求个并行处理速度的问题

2021-03-07 22:07:46 +08:00
 ft3312591
碰到个问题,需要预估文件处理速度和完成时间,但是批处理是并行的,这个应该怎么算??
比如有 10 个文件,大小是 1 2 3 4 5 6 7 8 9
单进程处理速度是 1,共 3 个进程,求如何算完成时间??
感觉顺序不一样完成时间也会不一样,大致的范围能算吗?最好能用 python 实现
2630 次点击
所在节点    Python
11 条回复
AX5N
2021-03-07 23:09:07 +08:00
直接乘以 3 不就得了,你不是只要大概范围吗,误差范围就不管了呗
learningman
2021-03-07 23:18:12 +08:00
别算了,上协程,反正不浪费 CPU 时间
makdon
2021-03-08 00:29:57 +08:00
抽象来说,就是你有 n 个数值,将其分成 m 组,设分组后每组和的最大值为 x,求 x 的最小值?
woctordho
2021-03-08 03:44:01 +08:00
搞个负载均衡吧,比如用 Queue,然后估算时间只要除以 3 就行了
xuegy
2021-03-08 07:36:25 +08:00
先排三个队列出来,从最大的可能性开始选,目标是总和达到平均值。比如第一个线程选 9+6,第二个选 8+7,第三个选剩下的,正好同时完成。
siyemiaokube
2021-03-08 07:56:50 +08:00
精准的完成时间是多机调度问题,精确解是 npc 问题,所以你还是随便估一下吧
dingwen07
2021-03-08 08:41:33 +08:00
如果是单核 CPU 那就简单了
shuax
2021-03-08 09:30:20 +08:00
from multiprocessing import Manager
算的过程中上报进度
ch2
2021-03-08 12:38:49 +08:00
已用时间 t_current,已完成任务的百分比 percent,预计完成时间 t_current/percent*(1-percent)
percent 由 n 个子进程汇报给父进程,父进程计算
ipwx
2021-03-08 13:15:51 +08:00
看上去像是 XY problem 。把你的原始需求说一下

https://xyproblem.info/
space2020
2021-03-09 00:13:47 +08:00
这是个 NP-完全问题,如果想要求精确解,目前只能暴力,或者用贪心算法求一个近似解。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/759379

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX