ホームページ  >  記事  >  バックエンド開発  >  Python はスケジュールされたタスクを実装します

Python はスケジュールされたタスクを実装します

高洛峰
高洛峰オリジナル
2017-02-10 09:22:551840ブラウズ

この記事では、スケジュールされたタスクを実装するための主に 5 つの方法を紹介します。興味のある方は参考にしてください。

Python でスケジュールされたタスクを実装する方法はたくさんあります。以下に、いくつかの

ループ スリープを示します。

これは、実行するタスクをループに配置し、実行する前に一定期間スリープする最も簡単な方法です。欠点は、制御が難しく、睡眠がブロック機能となってしまうことです。

def timer(n): 
  ''''' 
  每n秒执行一次 
  ''' 
  while True:  
    print time.strftime('%Y-%m-%d %X',time.localtime())  
    yourTask() # 此处为要执行的任务  
    time.sleep(n)

スレッドのタイマー:

スレッドモジュールのタイマーは、スケジュールされたタスクの実装に役立ち、ノンブロッキングです。

たとえば、3 秒後に helloworld を出力します:

def printHello(): 
  print "hello world" 
 
Timer(3, printHello).start()

たとえば、3 秒ごとに helloworld を出力します:

def printHello(): 
  print "Hello World" 
  t = Timer(2, printHello) 
  t.start() 
 
 
if __name__ == "__main__": 
  printHello()

sched モジュールを使用します:

スケジュールはスケジューリング (遅延時間処理メカニズム)。

# -*- coding:utf-8 -*- 
# use sched to timing 
import time 
import os 
import sched 
 
 
# 初始化sched模块的scheduler类 
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。 
schedule = sched.scheduler(time.time, time.sleep) 
 
 
# 被周期性调度触发的函数 
def execute_command(cmd, inc): 
  ''''' 
  终端上显示当前计算机的连接情况 
  ''' 
  os.system(cmd) 
  schedule.enter(inc, 0, execute_command, (cmd, inc)) 
 
 
def main(cmd, inc=60): 
  # enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数, 
  # 给该触发函数的参数(tuple形式) 
  schedule.enter(0, 0, execute_command, (cmd, inc)) 
  schedule.run() 
 
# 每60秒查看下网络连接情况 
if __name__ == '__main__': 
  main("netstat -an", 60)

タイミング フレームワーク APScheduler を使用します:

APScheduler は、Quartz に基づく Python タイミング タスク フレームワークです。日付、固定時間間隔、crontab タイプに基づいてタスクを提供し、タスクを永続化できます。

まだ自分で試していないので、しばらく使ったら追加します。

Windows のスケジュールされたタスクを使用する:

ここでは、必要な Python プログラムを exe ファイルにパッケージ化し、Windows でスケジュールされた実行を設定できます。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

Python でのスケジュールされたタスクの実装に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。