我想運行例如FUNC()每秒正好是1周時間的函數。但是func()的運行時間大約是500毫秒。我怎樣才能做到這一點?我知道如果函數的運行時間很短,我可以在每次執行後在func()和sleep()中寫一個while循環1秒。但現在,運行時間很長。我應該怎麼做才能確保func()每秒精確運行1次?謝謝。如何定期執行某些功能,如果這個功能隨時間需要運行(比peroid以下)
回答
呦做到:
- 採取START_TIME當前時間。
- 完成工作
- 以當前時間END_TIME
- 等待(即1秒+ - END_TIME)
這樣一來,就可以執行每幾秒鐘內你的任務可靠。如果任務花費的時間更少,則會等待更長時間,反之亦然。但是請注意,這假設你的任務總是少於1秒。執行。在真實的代碼中,你想在sleep語句之前檢查它。
實施細節取決於平臺。
注意,使用這種方法仍然導致小的漂移,由於它需要計算步驟4.一種更準確的替代方法是在一秒鐘的整數倍同步的時間。那樣,超過1000個週期你不會漂移。
這取決於精度的你所需要的水平。
謝謝。你能給我更多關於整數同步的細節嗎?謝謝。 – user2172495 2013-03-24 04:06:57
如果你想有一個畜生,便於代碼的解決方案,你可以得到時間的函數的第一次運行之前,並將其保存在某個變量(START_TIME)。創建存儲下一個重複編號的重複索引計數變量(repeat_number)。那麼你可以這樣做:
1) next_run_time = ++repeat_number*1sec + start_time;
2) func();
3) wait_time = next_run_time - current_time;
4) sleep(wait_time)
5) goto 1;
這種方法可以禁止在每次迭代時累積時間誤差。
但對於實際的應用,你應該找到一些事件框架或庫。
謝謝。什麼時候應該獲得current_time? – user2172495 2013-03-24 04:09:19
current_time是計算wait_time時的當前時間。 =) – JustAnotherCurious 2013-03-24 04:12:25
我想我明白了。那麼next_run_time是準確的時間嗎? – user2172495 2013-03-24 04:13:08
- 1. 如何在特定時間和日期運行某個功能?
- 2. 如何同時運行這些功能?
- 3. 如何隱式執行特定時間的某些功能
- 4. 在某些時鐘時執行功能
- 5. 如何在給定時間後執行某個功能?
- 6. AngularJS如何在某些功能完成後執行功能?
- 7. 如何在一段時間後執行某些功能?
- 8. 如何在執行某個其他功能時停止某個功能?
- 9. 如何檢查哪些功能運行以及何時運行?
- 10. 如何定期執行CherryPy中的某個功能
- 11. 如何通過執行以下功能
- 12. 如何執行以下遞歸功能?
- 13. 如何在某個功能完成後才能執行某個功能?
- 14. 計算運行某個功能所需的時間
- 15. 定期運行JavaScript功能
- 16. 在某個時間執行某個功能
- 17. 如何使某些行的這個功能變慢?
- 18. 以特定間隔執行功能
- 19. 爲什麼某些功能的執行時間差別很大?
- 20. Caculating功能運行時間
- 21. 如何一個接一個地運行這些功能?
- 22. 在特定時間執行功能
- 23. 在特定的時間執行功能
- 24. 需要在執行某個功能後更改TD背景
- 25. Python的線程 - 運行功能在某些時間
- 26. 上一個功能運行完成後執行一個功能
- 27. 如何按下「Enter」鍵執行功能?
- 28. 我如何執行功能?
- 29. 定時器運行功能
- 30. QT,運行特定時間的功能
Windows還是linux?你想要你的代碼是可移植的嗎?您可以使用定時器,但在Windows我建議['CreateTimerQueueTimer'(http://msdn.microsoft.com/en-us/library/windows/desktop/ms682485(V = vs.85)的.aspx) – Serdalis 2013-03-24 03:22:20