我有点难以理解ScheduledTask []。这是在第V 8.Mathematica中的ScheduleTask是否对时间间隔有任何限制?
加入在Windows 7,64位,用V 8.01,当我运行下面的代码
dt = 0.01;
c = 0;
Dynamic[c]
task = CreateScheduledTask[c += 1, {dt, 100}];
StartScheduledTask[task];
我得到 'c' 的值为51结束,而不是100按预期方式。
当我将上面的'dt'更改为更大的值,比如说0.02,或者任何其他大于0.02秒的值,那么每次我得到100。
如果我使'dt'0.005,结果c = 27。使'dt'为0.0025,c变为18,依此类推。
因此,'dt'限制(CPU时间粒度)似乎是0.02以获得我想要的。这是20毫秒。
但从其他网站,我看到Windows 7(取决于硬件的课程)可以提供比这更小的CPU时钟分辨率。可能是1-10毫秒。
我在这里错过了什么,或者我误解了这个功能?
帮助这个功能说
creates a task that will try evaluating expr once every time seconds up to count times total
我找不到这个使用Mathematica自己的文档的详细信息,但我可以忽略它。
此功能文档http://reference.wolfram.com/mathematica/ref/CreateScheduledTask.html
感谢 PS。完成后删除任务,命令
RemoveScheduledTask[task]
或清洁的一切:
RemoveScheduledTask[ScheduledTasks[]]
五金我是:英特尔i7处理器930,2.8GHz的4核心
在“CreateScheduledTask”文档中的“更多信息”中,它表示“默认情况下,如果评估expr所需的时间大于时间,则下一个待执行的评估将被跳过。所以也许这就是问题所在(尽管我会认为将1添加到c需要大约0.01秒的时间)。 – Heike
我认为这是时钟的限制,而不是将数字加1。任务时钟的运行速度不能超过每个插槽大约20毫秒,在我的系统上,这是0.02秒。这就是我所看到的。但我同意你的看法,关于这个功能的文档可以做得更加详细和清晰。 – Nasser