将循环分成更小的部分

时间:2019-09-12 21:33:45

标签: algorithm loops for-loop mathematical-optimization

我在循环内有一个函数,该函数占用大量资源,除非服务器处于低负载状态,否则通常无法完成。

如何将其分成较小的循环?当减小该值时,该函数执行正常。

作为一个例子,它可以工作:

x = 10
for i = 0; i <= x; i++ 
{ 
 myfunction(i)
}

但是,当将 x 增加到100时,内存占用功能将停止工作。

一个人如何将100分成10(即10个)块并运行10次循环?

我应该能够使用任何值,不仅是100或10的倍数。

谢谢。

2 个答案:

答案 0 :(得分:0)

您的函数是否异步,并且一次有太多实例?是开放资源还是不封闭资源?也许您可以在每10次迭代后延迟一次?

x = 1000
for i = 0; i <= x; i++ 
{ 
 myfunction(i);
 if(i%10==0)
 {
  Thread.Sleep(1000);
 }
}

答案 1 :(得分:0)

如果您的任务是异步的,则可以使用工作线程池技术。

Ex

您可以创建具有10个线程的线程池。 首先,您为它们分配10个任务。 每当任务完成时,您都可以将剩余任务分配给给定线程。