我只想尝试一段代码.伪代码看起来像:
start = get_ticks()
do_long_code()
print "It took " + (get_ticks() - start) + " seconds."
Run Code Online (Sandbox Code Playgroud)
这看起来如何用Python?
更具体地说,我如何得到午夜以来的滴答数(或者Python组织那个时间)?
我正在寻找一个可靠的REST API,它可以跨平台提供世界时间和时区信息.
我需要当前时间作为字符串.无论用户在世界各地的位置如何,我都希望它能在一秒钟内返回结果.
在其他实现中,我想将它用于一致的倒数计时器,比用户的[可能不准确]计算机时间更准确.它可以是GMT或其他时区,只要指定时区和偏移量,如2012-11-05 16:16:50 EST.
我会自己构建这个API,但是当通过像Rails这样的整个大软件堆栈过滤某人只是为了返回一个简单时,我会担心潜在的延迟问题(以及不优雅)String.
远离美国东海岸的用户的延迟时间过长会抵消任务所需的准确性带来的好处.
任何建议和/或示例表示赞赏.
我有几个C#Azure函数使用计时器触发器按计划运行.我已经设置了它们,在%TimerSchedule%应用程序设置中指的是cron表达式:
public static void Run([TimerTrigger("%TimerSchedule%")]TimerInfo myTimer, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)
在开发过程中,我经常希望使用Azure功能工具为Visual Studio + Azure功能核心工具在本地运行这些功能.但是,当我按F5调试本地函数时,它(通常)不会立即运行.相反,它根据计时器计划开始等待下一次出现.因此,例如,如果我的cron表达式表示每天晚上8点运行,我必须等到晚上8点才能在我的机器上实际运行该功能.
所以我的问题是:在本地运行一次函数的最简单和最好的方法是什么?
我尝试或考虑过的事情:
Run()方法
的控制台应用程序或单元测试TimerInfo和TraceWriter参数Run()- 而且我发现了很少的文档.Microsoft 在Azure功能页面中测试代码的策略对此主题没有太大帮助 - 它只提到计时器触发器作为测试其他触发器类型的方法.
在一个完美的世界里,我会点击F5并且该功能会立即运行一次 - 就像开发一个"普通"的.NET应用程序一样.
我在我的应用程序的一个类中使用System.Timers.Timer类.我知道Timer类具有继承自实现IDisposable接口的父Component类的Dispose方法.在我的应用程序生命周期中,下面创建的类实例多次; 他们每个人都有一个Timer类的实例,它在类的生命周期中连续生成Elapsed事件.我应该在使用Timer类来配置计时器对象的类中实现IDisposable接口吗?(我见过的代码完全没有这样做).如果我使用下面的类,我担心一些非托管资源将不会被释放:
SomeClass someClass = new SomeClass();
someClass.DoSomething();
someClass = null;
Run Code Online (Sandbox Code Playgroud)
班级:
using System.Timers;
public class SomeClass
{
private Timer m_timer;
public SomeClass()
{
m_timer = new Timer();
m_timer.Interval = 1000;
m_timer.Elapsed += new ElapsedEventHandler(m_timer_Elapsed);
m_timer.AutoReset = false;
m_timer.Start();
}
public void DoSomething()
{
}
private void m_timer_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
//Do some task
}
catch (Exception ex)
{
//Ignore
}
finally
{
if (m_timer != null)
{
//Restart the timer
m_timer.Enabled = true;
}
}
} …Run Code Online (Sandbox Code Playgroud) 我希望使用c#在Windows窗体应用程序中按分钟(按时钟)每分钟做一些事情.我只是想知道最好的方法是什么?
我可以使用一个计时器并将其间隔设置为60000,但为了让它在一分钟内运行,我必须准确地启用它,而不是真的可行.
我可以使用一个计时器并将其间隔设置为1000.然后在其tick事件中,我可以根据我设置的变量检查当前时钟,如果分钟已经改变,则运行我的代码.这让我很担心,因为我让我的电脑每1秒做一次检查,以便每1分钟进行一次工作.当然这很难看?
我正在使用Windows窗体和.Net 2.0,因此不想使用.Net 3.5附带的DispatchTimer
这一定是一个相当普遍的问题.你有没有更好的方法来做到这一点?
我想看一个函数运行多长时间.所以我在表单上添加了一个计时器对象,我出来了这段代码:
private int counter = 0;
// Inside button click I have:
timer = new Timer();
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
Result result = new Result();
result = new GeneticAlgorithms().TabuSearch(parametersTabu, functia);
timer.Stop();
Run Code Online (Sandbox Code Playgroud)
和:
private void timer_Tick(object sender, EventArgs e)
{
counter++;
btnTabuSearch.Text = counter.ToString();
}
Run Code Online (Sandbox Code Playgroud)
但这并不算什么.为什么?
我想在java中有一个带有可重置时间的java.utils.Timer.我需要在X秒内设置一次性事件.如果在创建计时器和X秒之间没有任何反应,则事件正常发生.
但是,如果在X秒过去之前,我决定事件应该在Y秒之后发生,那么我希望能够告诉计时器重置其时间,以便事件在Y秒内发生.例如,计时器应该能够执行以下操作:
Timer timer = new Timer();
timer.schedule(timerTask, 5000); //Timer starts in 5000 ms (X)
//At some point between 0 and 5000 ms...
setNewTime(timer, 8000); //timerTask will fire in 8000ms from NOW (Y).
Run Code Online (Sandbox Code Playgroud)
我没有看到使用utils计时器的方法,就像你调用cancel(),你不能再次安排它.
我接近复制此行为的唯一方法是使用javax.swing.Timer并涉及停止原始计时器,并创建一个新计时器.即:
timer.stop();
timer = new Timer(8000, ActionListener);
timer.start();
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法??
我需要每120秒运行一段代码.我正在寻找一种在VBA中执行此操作的简单方法.我知道有可能从Auto_Open事件中获取计时器值以防止必须使用幻数,但我无法完全了解如何触发计时器以获得每120秒运行一次的东西.
如果我可以避免它,我真的不想在睡眠中使用无限循环.
编辑:
基于提供的答案的交叉发布位于:Excel VBA Application.OnTime.我觉得使用这个想法是个坏主意......想法无论如何?
我有一段Javascript,每n秒检查一次条件(通过AJAX调用).如果该条件为真,则停止检查.我已通过以下方式实现它:
var stopTimer;
var timerId = setInterval(function() {
/* Make Ajax Calls and set stopTimer */
if (stopTimer) {
clearInterval(timerId);
}
}, 10000);
Run Code Online (Sandbox Code Playgroud)
但是,我发现不稳定的行为:有时会工作,但在其他时候,它会一直检查.我已经检查过(尽可能多)代码的任何部分都没有错误.
因此,我怀疑在setInterval处理程序中调用clearInterval可能是罪魁祸首.是对的吗?可以在setInterval处理程序中调用clearInterval吗?
感谢您的关注
我目前正在尝试在我的Android应用程序中设置WiFi扫描,每隔30秒扫描一次WiFi接入点.
我已经使用Timer和TimerTask以我需要的间隔正确运行扫描.
但是我希望能够在用户按下按钮时停止并开始扫描,我当前无法停止然后重新启动Timer和TimerTask.
这是我的代码
TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();
public void doWifiScan(){
scanTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
wifiManager.scan(context);
Log.d("TIMER", "Timer set off");
}
});
}};
t.schedule(scanTask, 300, 30000);
}
public void stopScan(){
if(scanTask!=null){
Log.d("TIMER", "timer canceled");
scanTask.cancel();
}
}
Run Code Online (Sandbox Code Playgroud)
所以Timer和Task启动正常并且扫描每30秒发生一次但是我不能让它停止,我可以停止Timer但是任务仍然发生并且scanTask.cancel()似乎也不起作用.
有一个更好的方法吗?或者我在Timer/TimerTask类中遗漏了什么?