我在循环内有一个函数,该函数占用大量资源,除非服务器处于低负载状态,否则通常无法完成。
如何将其分成较小的循环?当减小该值时,该函数执行正常。
作为一个例子,它可以工作:
x = 10
for i = 0; i <= x; i++
{
myfunction(i)
}
但是,当将 x 增加到100时,内存占用功能将停止工作。
一个人如何将100分成10(即10个)块并运行10次循环?
我应该能够使用任何值,不仅是100或10的倍数。
谢谢。
答案 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个任务。 每当任务完成时,您都可以将剩余任务分配给给定线程。