簡體   English   中英

在python中安排任務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM