我遇到一个问题 就是 我想写一个死循环
while True:
write(timeframe="1m")
write(timeframe="5m")
write(timeframe="1h")
write(timeframe="1d")
如何能够实现
第一个 write 方法执行后休眠 60s
第二个 write 方法执行后休眠 5min
第三个 write 方法执行后休眠 1h
第四个 write 方法执行后休眠 1d
我遇到一个问题 就是 我想写一个死循环
while True:
write(timeframe="1m")
write(timeframe="5m")
write(timeframe="1h")
write(timeframe="1d")
如何能够实现
第一个 write 方法执行后休眠 60s
第二个 write 方法执行后休眠 5min
第三个 write 方法执行后休眠 1h
第四个 write 方法执行后休眠 1d
|
swordspoetOct 13, 2018 via iPhone
1
这个很简单啊,用 time.sleep() 就可以。
|
|
u14eOct 13, 2018 via Android
2
time.sleep() ?
|
|
Trim21Oct 13, 2018 via Android
3
我觉得你需要 crontab …
|
|
4
time.sleep()的话 比如最后一个 睡一小时 那么第一个需要等待一小时才能执行,而我想让他每分钟执行
|
|
AlisaDestinyOct 13, 2018
5
```python
#coding=utf-8 import concurrent.futures as futures # from concurrent.futures import ThreadPoolExecutor import time def write(delay): print('sleep:',delay) time.sleep(delay) return 'result' def main(): with futures.ThreadPoolExecutor(max_workers=4) as executor: download_futures = [executor.submit(write, delay) for delay in [60,5*60,60*60,24*60*60]] for future in futures.as_completed(download_futures): rs = future.result() print(rs) print('all done.') if __name__ == '__main__': main() ``` |
|
likukuOct 13, 2018
6
@zcsnbb time.sleep() ,crontab 里每分钟叫这个 .py 起来一次,每次即一个新 py 进程。
当然,为了防止内存耗尽,你的 .py 或许要增加首先检测系统里有几个同名 .py 进程在跑, 假若超过你的限制,那么就直接 sys.exit() |
|
itskingnameOct 13, 2018
7
@likuku 补充 6 楼,如何使用 Shell 命令判断一个进程是否存在: https://mp.weixin.qq.com/s/b9RxTGGrUpUG1NgZoqE1uA
|
|
picture2200Oct 13, 2018 via Android
8
要定时任务吧,用 apscheduler 吧。照你这样写很麻烦啊。
|
|
chrisyunhuaOct 13, 2018
9
每秒钟取 timestamp 再去 mod timeframe 判断一下不行吗
|
|
May725Oct 13, 2018
10
我觉得你应该用 Timer 定时任务来做,而不是简单的 sleep,因为长时间的 sleep 误差挺大的,有可能一直挂起不恢复了。
|
|
WizardMeowOct 13, 2018 via Android
11
asyncio 了解一下,轻量级解决方案
|
|
WizardMeowOct 13, 2018 via Android
12
另外 sleep 最好不要超过 h
|
|
beny2morOct 13, 2018
13
Timer?
|
|
eliotiOct 13, 2018
14
定时任务? schedule 模块
|
|
yzdingOct 13, 2018 via Android
15
schedule,给人类用的定时器模块。
# 每十分钟执行一次 schedule.every(10).minutes.do(job) # 每 1 小时执行一次 schedule.every().hour.do(job) # 每天执行一次 schedule.every(). day.do(job) while True: schedule.run_pending() time.sleep(1) |
|
chaninOct 13, 2018
16
python 多线程有点尴尬,golang 了解一下!
|
|
myliyifeiOct 13, 2018 via Android
17
我倒是想知道 多线程或者多进程 最后一句是不是总是 while true + time.sleep
? 死循环等介绍 |
|
ffffishOct 13, 2018
19
为了避免著名的 X-Y 问题,我想问一下这个 use case 是什么呢?为什么需要 wait 呢?
如果轻量级可以用 cronjob,大型项目可以考虑 apache airflow |