我试图每隔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
抱歉新手问题,谢谢
答案 0 :(得分:2)
你的工作是循环超过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)
答案 1 :(得分:2)
如果您只需要增加一个数字并每X秒打印一次,您可以尝试这样的事情:
i = 0
while 1:
print("My message here "+str(i))
i++
time.sleep(5)
是否需要进行线程化?
如果您向我提供有关应用程序应如何工作的更多详细信息,我将编辑此答案。
答案 2 :(得分:2)
我认为你的问题在于你的工作功能!问问自己,循环2到5是否是每个工作方法的一部分?根据你的问题描述,它应该只包含打印消息:
public function send(Swift_Mime_Message $message, &$failedRecipients = null)
{
$client = $this->getHttpClient();
$client->setDefaultOption('verify', false); // ***add this***
$client->post('https://mandrillapp.com/api/1.0/messages/send-raw.json', [
'body' => [
'key' => $this->key,
'raw_message' => (string) $message,
'async' => false,
],
]);
}
然后在其他部分你应该传递消息和num:
def job(msg,num): #if your message is same you won't need to pass it,same for num
print(msg+str(num))