[英]Scheduling a task in python
我試圖每5秒安排一次任務,這是我做的:
import schedule
import time
import tweepy
from threading import Timer
def job():
iGen = (i for i in range(1, 6))
for i in iGen:
i += 1
mymessage = "My message here " + str(i)
print(mymessage)
schedule.every(5).seconds.do(job)
while 1:
schedule.run_pending()
time.sleep(1)
但結果是:
My message here 2 ..after 5 secs
My message here 3
My message here 4
My message here 5
My message here 6
My message here 2 ..after 5 secs
My message here 3
My message here 4
My message here 5
My message here 6
My message here 2 ..after 5 secs
My message here 3
My message here 4
My message here 5
My message here 6
我需要的是:
My message here 2 ..after 5 secs
My message here 3 ..after 5 secs
My message here 4 ..after 5 secs
My message here 5 ..after 5 secs
My message here 6 ..after 5 secs
對不起新手的問題,謝謝
您的工作是遍歷2-6個,每個打印一個。 聽起來好像您希望該作業在每次運行時僅打印一次。 這樣就可以了,但是不會給消息編號。
import schedule
import time
def job():
print("Message")
schedule.every(5).seconds.do(job)
while 1:
schedule.run_pending()
time.sleep(1)
要進行編號有點復雜,但是您可以使用靜態變量來進行編號:
import schedule
import time
def job():
job.i += 1
print("Message: " + str(job.i))
job.i = 1
schedule.every(5).seconds.do(job)
while 1:
schedule.run_pending()
time.sleep(1)
如果您只需要增加一個數字並每隔X秒打印一次,則可以嘗試執行以下操作:
i = 0
while 1:
print("My message here "+str(i))
i++
time.sleep(5)
是否需要穿線?
如果您提供有關應用程序如何工作的更多詳細信息,我將編輯此答案。
我認為您的問題出在您的工作職能上!問問自己遍歷2到5是每種工作方法的一部分嗎?根據您的問題描述,它應該只包含打印一條消息:
def job(msg,num): #if your message is same you won't need to pass it,same for num
print(msg+str(num))
然后在其他部分,您應該傳遞message和num:
schedule.every(5).seconds.do(job)
while 1:
schedule.run_pending()
time.sleep(1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.