在* nix的Python中, time.sleep()阻塞线程或进程?
我试图拖延 – 或者让我睡觉 – 我的Java程序,但发生错误。 我无法使用Thread.sleep(x)或wait() 。 出现相同的错误信息: 未报告的exceptionjava.lang.InterruptedException; 必须被逮捕或宣布被抛出。 在使用Thread.sleep()或wait()方法之前是否需要执行任何步骤?
我如何让我的Python程序睡眠50毫秒?
Java的Thread.sleep何时抛出InterruptedException? 忽略它是否安全? 我没有做任何multithreading。 我只想等待几秒钟,然后重试一些操作。
我做了一个二十一点的游戏,我希望AI玩家在拿牌之间暂停一下。 我试着简单地使用Thread.sleep(x),但是这会让它冻结,直到AI玩家完成所有的卡片。 我知道Swing不是线程安全的,所以我看了一下Timers,但是我不明白怎样才能使用它。 这是我现在的代码: while (JB.total < 21) { try { Thread.sleep(1000); } catch (InterruptedException ex) { System.out.println("Oh noes!"); } switch (getJBTable(JB.total, JB.aces > 0)) { case 0: JB.hit(); break; case 1: break done; case 2: JB.hit(); JB.bet *= 2; break done; } } 顺便说一句,命中(); 方法更新GUI。
有没有人知道一个库,它提供了一个Thread.sleep()Java的错误不超过1-2毫秒? 我尝试了睡眠,错误测量和BusyWait的混合,但我不能在不同的Windows机器上得到这个可靠的。 如果实现可用于Linux和MacOS,则它可以是本地实现。 编辑链接尼克提供( http://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks )是一个非常好的资源来理解各种定时器/睡眠/时钟java的问题。
我试图在等待5秒后删除文本框内的文本,而不是程序不会运行,并确实睡眠一切。 也有一种方法让我只是让我的文本框睡觉,所以我可以运行其他代码,而文本被冻结? from time import time, sleep from Tkinter import * def empty_textbox(): textbox.insert(END, 'This is a test') sleep(5) textbox.delete("1.0", END) root = Tk() frame = Frame(root, width=300, height=100) textbox = Text(frame) frame.pack_propagate(0) frame.pack() textbox.pack() empty_textbox() root.mainloop()
我遇到了一个间歇性失败的unit testing,因为时间已经不是我所期望的了。 这个testing是什么样子就是一个例子: Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); TimeSpan oneSecond = new TimeSpan(0, 0, 1); for(int i=0; i<3; i++) { Thread.Sleep(oneSecond); } stopwatch.Stop(); Assert.GreaterOrEqual(stopwatch.ElapsedMilliseconds, 2999); 大多数情况下,这个过程至less失败了一次失败,因为: 预计:大于或等于2999但是:2998 我不明白怎么可能less于3秒。 Thread.Sleep是否存在准确性问题,或者是我不知道的秒表? 就像下面一些问题的更新一样。 被unit testing的场景是一个类允许一个人调用一个方法来执行一些操作,如果它失败了,等一下再调用这个方法。 上面显示的testing只是近似发生的事情。 说我想调用一个方法DoSomething()…但是,如果DoSomething()引发exception,我希望能够重试调用它最多3次,但每次尝试之间等待1秒。 在这种情况下,unit testing的目的是validation当我们要求3次重试,每次重试之间等待1秒钟,总时间大于3秒。
我在这里发现了类似的问题,但没有答案让我满意。 因此,再次重述这个问题 – 我有一个任务需要定期完成(比如每隔1分钟)。 使用Timertask和Timer来做这件事,而不是创build一个带有睡眠的无限循环的新线程,有什么好处呢? 使用timertask- TimerTask uploadCheckerTimerTask = new TimerTask(){ public void run() { NewUploadServer.getInstance().checkAndUploadFiles(); } }; Timer uploadCheckerTimer = new Timer(true); uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000); 使用Thread和sleep- Thread t = new Thread(){ public void run() { while(true) { NewUploadServer.getInstance().checkAndUploadFiles(); Thread.sleep(60 * 1000); } } }; t.start(); 如果逻辑的执行时间超过间隔时间,我就不必担心是否会错过某些周期。 请评论这个.. 谢谢, -Keshav 更新: 最近我发现使用Timer与Thread.sleep()之间的另一个区别。 假设当前的系统时间是上午11:00。 […]
我有两个关于PHP中的sleep()函数的问题: 睡眠时间是否影响我的PHP脚本的最大执行时间限制? 有时,PHP会显示消息“最大执行时间超过30秒”。 如果我使用sleep(31)这个消息会出现吗? 使用sleep()函数时是否有风险? 它是否花费了很多CPU性能?