ホームページ バックエンド開発 Python チュートリアル Python3によるタスクのタイミングループ実行の実装

Python3によるタスクのタイミングループ実行の実装

Apr 19, 2019 pm 01:15 PM
python3 threading time

実際の開発では、特定の機能モジュールやタスクを同じ時間内で周期的に実行したいという要件がよくあります。ここでタイマーという概念が出てきますが、具体的にはどのように実装すればよいのでしょうか?タイマーには、スレッドの実行を制御したり、システム消費量を削減したりできる、非常に実用的な機能が多数あります。それでは、Python3 でタイミング関数を実装する練習をしてみましょう。

Python3によるタスクのタイミングループ実行の実装

たとえば、Python を使用してクローラ システムを開発する場合、データを監視するスレッド サービスを実装するために、一定の間隔でタスクを繰り返し実行する必要がある場合があります。クロールのステータスやタイマーがここで役に立ちます。

[ビデオ推奨: Python3 ビデオ チュートリアル]

[マニュアル推奨: Python 中国語マニュアル]

Python ドキュメントを通じてタイミング関数を実装するための threading.Timer() を見つけることができます:

簡単な実装コード:

import threading
def func1(a):
    #Do something
    print('Do something')
    a+=1
    print(a)
    print('当前线程数为{}'.format(threading.activeCount()))
    if a>5:
        return
    t=threading.Timer(5,func1,(a,))
    t.start()
ログイン後にコピー

レンダリング:

Python3によるタスクのタイミングループ実行の実装

# #この情報を参照すると、Python を使用して 3 つの異なるスケジュールされたタスクの実行方法を実装できます:

1. スケジュールされたタスクのコード

#!/user/bin/env python
#定时执行任务命令
import time,os,sched
schedule = sched.scheduler(time.time,time.sleep)
def perform_command(cmd,inc):
  os.system(cmd)
  print('task')
def timming_exe(cmd,inc=60):
  schedule.enter(inc,0,perform_command,(cmd,inc))
  schedule.run()
print('show time after 2 seconds:')
timming_exe('echo %time%',2)
ログイン後にコピー

2. タスクの定期的な実行

#!/user/bin/env python
import time,os,sched
schedule = sched.scheduler(time.time,time.sleep)
def perform_command(cmd,inc):
  #在inc秒后再次运行自己,即周期运行
  schedule.enter(inc, 0, perform_command, (cmd, inc))
  os.system(cmd)
def timming_exe(cmd,inc=60):
  schedule.enter(inc,0,perform_command,(cmd,inc))
  schedule.run()#持续运行,直到计划时间队列变成空为止
print('show time after 2 seconds:')
timming_exe('echo %time%',2)
ログイン後にコピー

3 .Loop 実行コマンド

#!/user/bin/env python
import time,os
def re_exe(cmd,inc = 60):
  while True:
    os.system(cmd)
    time.sleep(inc)
re_exe("echo %time%",5)
ログイン後にコピー

要約: Python のタイマー実装方法はすべてスケジュールとスレッドに基づいており、具体的な使用方法は実際の状況に応じて柔軟に使用する必要があります。


最も一般的に使用される 2 つのモジュール: スレッド、スケジュール

スレッド モジュールの使用法:


import threading ,time
from time import sleep, ctime
class Timer(threading.Thread):
        """
        very simple but useless timer.
        """
        def __init__(self, seconds):
                self.runTime = seconds
                threading.Thread.__init__(self)
        def run(self):
                time.sleep(self.runTime)
                print ("Buzzzz!! Time's up!")
class CountDownTimer(Timer):
        """
        a timer that can counts down the seconds.
        """
        def run(self):
                counter = self.runTime
                for sec in range(self.runTime):
                        print (counter)
                        time.sleep(1.0)
                        counter -= 1
                print ("Done")
 
class CountDownExec(CountDownTimer):
        """
        a timer that execute an action at the end of the timer run.
        """
        def __init__(self, seconds, action, args=[]):
                self.args = args
                self.action = action
                CountDownTimer.__init__(self, seconds)
        def run(self):
                CountDownTimer.run(self)
                self.action(self.args)
 
def myAction(args=[]):
        print ("Performing my action with args:")
        print (args)
 
if __name__ == "__main__":
        t = CountDownExec(3, myAction, ["hello", "world"])
        t.start()
        print("2333")
ログイン後にコピー

Sched モジュールの使用法:


'''
使用sched模块实现的timer,sched模块不是循环的,一次调度被执行后就Over了,如果想再执行,
可以使用while循环的方式不停的调用该方法
'''
import time, sched
#被调度触发的函数
def event_func(msg):
    print("Current Time:", time.strftime("%y-%m-%d %H:%M:%S"), 'msg:', msg)
def run_function():
    #初始化sched模块的scheduler类
    s = sched.scheduler(time.time, time.sleep)
    #设置一个调度,因为time.sleep()的时间是一秒,所以timer的间隔时间就是sleep的时间,加上enter的第一个参数
    s.enter(0, 2, event_func, ("Timer event.",))
    s.run()
def timer1():
    while True:
        #sched模块不是循环的,一次调度被执行后就Over了,如果想再执行,可以使用while循环的方式不停的调用该方法
        time.sleep(1)
        run_function()
if __name__ == "__main__":
    timer1()
ログイン後にコピー

以上がPython3によるタスクのタイミングループ実行の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

タイムパッケージの単調クロック処理 タイムパッケージの単調クロック処理 Aug 04, 2023 pm 05:45 PM

今日は主に golang time パッケージの時間適用方法を見ていきます。この 2 つの間の一般的なルールは、時間を伝えるために「ウォールタイム」が使用され、時間を測定するために「モノトニッククロック」が使用されるということですが、他のクロック処理方法もあります。

Java8 Time APIの使い方 Java8 Time APIの使い方 Apr 28, 2023 pm 12:25 PM

1. 概要 この記事の一部として、既存の Date および CalendarAPI に関するいくつかの問題から始めて、新しい Java8Date および TimeAPI がこれらの問題をどのように解決するかを探ってみましょう。また、LocalDate、LocalTime、LocalDateTime、ZonedDateTime、Period、Duration などの Java8 時間クラス ライブラリのコア クラスとその API についても見ていきます。 2. 古い API (Java 8 以前) のスレッド セーフの問題 - Date クラスと Calendar クラスはスレッド セーフではないため、開発者がこれらの API の同時実行性の問題をデバッグすることが困難であり、それらに対処するために追加のコードを記述する必要があります。 。

Pythonの時刻と日時の違いと使用法は何ですか Pythonの時刻と日時の違いと使用法は何ですか May 02, 2023 am 11:01 AM

1. Python で時刻を表す 2 つの方法: timestamp: 1970.1.100:00:00 を基準とした秒単位のオフセット、一意の時刻タプル struct_time: 合計 9 要素>tm_year: year 1-12> tm_mon: month 1-12> tm_mday: 日 1 ~ 31>tm_hour: 時 0 ~ 23>tm_min: 分 0 ~ 59>tm_sec: 秒 0 ~ 59>tm_wday: 週 0 ~ 6 (0 は日曜日を意味します)>tm_day: 年間の日 1 ~ 366> tm_isdst: 夏時間であるかどうか、デフォルトは -1.ti

Python timeモジュールで時間を取得および変換する方法 Python timeモジュールで時間を取得および変換する方法 May 13, 2023 pm 12:19 PM

Pythontime モジュールの時間の取得と変換 Python の Time ライブラリでは、現在の日付と時刻へのアクセス、さまざまな形式での時刻の出力、指定された時刻の待機など、時間関連の処理を実行できます。 1. 時刻の取得 1.1. タイムスタンプ importtimetimestamp=time.time()#1682737552.5009851 グリニッジ標準時 (GMT) 1970 年 1 月 1 日の 00:00:00 から現在までの合計秒数 1.2. 構造化時間 importtimestruct_time= time。 localtime()#time.struct_time(tm_year=2

スレッド モジュールを使用して Python 3.x でスレッドを作成および管理する方法 スレッド モジュールを使用して Python 3.x でスレッドを作成および管理する方法 Aug 04, 2023 am 10:37 AM

Python 3.x でスレッドを作成および管理するためのスレッド モジュールの使用方法の紹介: コンピューターの強力なパフォーマンスにより、マルチスレッドは並列処理の一般的な方法になりました。 Python の標準ライブラリには、スレッドという便利なモジュールがあります。この記事では、Python3.x のスレッド モジュールを使用してスレッドを作成および管理する方法を紹介し、コード例を使用して説明します。 1. スレッドとは何ですか?スレッドは、単一プロセス内で実行される独立したプロセスです。

Python3にpipをインストールする方法 Python3にpipをインストールする方法 Dec 20, 2023 pm 05:42 PM

インストール手順: 1. Python3 がインストールされていて、コマンド ラインからアクセスできることを確認します; 2. ターミナルを開き、「python3 -m ensurepip --upgrade」コマンドを入力して pip をインストールします; 3. pip インストール パッケージをダウンロードします公式 Python Web サイトから; 4. ダウンロードした pip インストール パッケージをディレクトリに抽出します; 5. ターミナルを開き、解凍された pip ディレクトリに移動します; 6. "python3 setup.py install" コマンドを実行して pip をインストールします。

PHP 関数「time」を使用して、現在の UNIX タイムスタンプを返します。 PHP 関数「time」を使用して、現在の UNIX タイムスタンプを返します。 Jul 25, 2023 pm 04:42 PM

PHP 関数「time」を使用して、現在の UNIX タイムスタンプを返します。UNIX タイムスタンプは、1970 年 1 月 1 日の協定世界時 (UTC) の 0:00:00 からの合計秒数を指します。 PHP では、組み込み関数「time」を使用して、現在の UNIX タイムスタンプを取得できます。この記事では、この関数の使用方法を説明し、対応するコード例を示します。コード例: <?php$timestamp=time();echo" current

Java API開発におけるスレッド管理にスレッドを使用する Java API開発におけるスレッド管理にスレッドを使用する Jun 18, 2023 am 08:55 AM

Java は、アプリケーションを迅速に開発するのに役立つ豊富な API ライブラリを備えた強力なプログラミング言語です。スレッド管理は Java アプリケーションの中核的な問題であるため、JavaAPI 開発ではスレッド管理に Threading を使用することが避けられません。この記事ではThreadingを使ってスレッドを管理する方法を紹介します。 1. JavaAPI のスレッドとは何ですか?まず、スレッドとは何かを理解します。 Javaで

See all articles