Làm thế nào để bạn lặp lại một chức năng trong python cứ sau 5 giây?

Giả sử bạn muốn lặp lại vĩnh viễn một chức năng và độ trễ là một giây hoặc hai giây hoặc bất kỳ giây hoặc mili giây nào. Bạn làm như thế nào, đây là cách

Nhập chủ đề và sự kiện đầu tiên từ luồng. Event sẽ giúp ta quản lý Thread, còn Thread sẽ tạo thread nhánh mới để không can thiệp vào thread chính

Chức năng này là động cơ để lặp lại. Tham số khoảng thời gian sẽ giữ thời lượng trễ trong khi tham số func sẽ giữ chức năng sẽ được thực thi. Khi gọi hàm này, tham số func sẽ được thực thi bằng lệnh gọi lambda. Nếu không sử dụng từ khóa lambda, bạn sẽ không thể thêm dấu ngoặc đơn vào hàm và nếu bạn làm vậy sẽ gây ra lỗi

Mã này cũng có một lỗ hổng. Nó thực thi miễn là luồng chính đang hoạt động. Điều gì sẽ xảy ra nếu bạn chỉ cần lặp lại một chức năng một số lần và hoặc dừng chức năng đó khi một sự kiện là đúng

Chúng tôi tạo một lớp “RepeatEvery” và đặt một số biến thành công khai và những biến khác thành riêng tư. cái tôi. số lượng sẽ trả về số lần lớp này tự lặp lại trong khi bản thân. stop sẽ được sử dụng để dừng lớp Thread

Chức năng __repeatEvery là riêng tư và nó giống như chức năng chúng ta đã tạo trước đó. Điều kiện if cũng kiểm tra xem luồng sẽ dừng hay tiếp tục

Đây là cách bạn sử dụng lớp. Bằng cách tạo một lớp, bạn có thể dễ dàng quản lý và tạo nhiều chức năng lặp lại

Ngoài ra còn có một lỗ hổng trong việc sử dụng mã này. Nếu có lỗi với luồng chính, luồng lặp lại của chúng tôi sẽ không dừng và nó sẽ chạy mãi mãi. Để khắc phục điều này, chỉ cần bọc mã của bạn bằng một lần thử và nắm bắt, như thế này

Cách phổ biến nhất để thực thi một chức năng mỗi x giây trong Python là sử dụng thời gian. phương thức ngủ []. Thời gian. Hàm sleep[] là một hàm có sẵn trong Python được sử dụng để làm cho chương trình ngủ trong thời gian đã chỉ định

Chúng ta có thể sử dụng thời gian. ngủ để thực thi cứ sau x giây. Có hai cách khác nhau để sử dụng thời gian. ngủ[]

Sử dụng thời gian sai cách. ngủ[]

Mã dưới đây không thực thi cứ sau 60 giây. nó đặt khoảng cách 60 giây giữa các lần thực hiện. Nó chỉ xảy ra sau mỗi 60 giây nếu mã được thực thi của bạn hoàn toàn không mất thời gian

import time
while True:
    # Code executed here
    time.sleep[60]

Cách tốt để sử dụng thời gian. ngủ[].

import time
starttime = time.time[]
while True:
    print["tick"]
    time.sleep[60.0 - [[time.time[] - starttime] % 60.0]]

Phương pháp số 2. Sử dụng mô-đun lập lịch trong Python để thực thi mã Python sau khoảng thời gian

Chúng ta có thể sử dụng mô-đun lập lịch để gọi hàm hoặc một khối mã python sau một khoảng thời gian bằng cách sử dụng mô-đun lập lịch. Mô-đun lập lịch là một mô-đun python được sử dụng để lên lịch cho mã

import sched, time
s = sched.scheduler[time.time, time.sleep]
def do_something[sc]: 
    print["Doing stuff..."]
    # do your stuff
    sc.enter[60, 1, do_something, [sc,]]

s.enter[60, 1, do_something, [s,]]
s.run[]

Phương pháp số 3. Sử dụng mô-đun apscheduler trong Python để thực thi chức năng cứ sau x giây

Bạn có thể sử dụng mô-đun apscheduler của bên thứ ba này trong python. Nó cũng rất hữu ích theo những cách khác. Bạn có thể cung cấp các chức năng khác như blockscheduler, TwistedScheduler và nhiều chức năng khác

from apscheduler.schedulers.background import BlockingScheduler
def print_t[]:
  pass

sched = BlockingScheduler[]
sched.add_job[print_t, 'interval', seconds =60] #will do the print_t work for every 60 seconds

sched.start[]

Phương pháp số 4. Sử dụng mô-đun luồng để thực thi một chức năng sau một khoảng thời gian

Đây là mã python, nó chỉ cho bạn cách sử dụng mô-đun luồng để thực thi một chức năng sau một khoảng thời gian. Bạn có thể kiểm tra nó


import threading 
import time

class RepeatedTimer[object]:
  def __init__[self, interval, function, *args, **kwargs]:
    self._timer = None
    self.interval = interval
    self.function = function
    self.args = args
    self.kwargs = kwargs
    self.is_running = False
    self.next_call = time.time[]
    self.start[]

  def _run[self]:
    self.is_running = False
    self.start[]
    self.function[*self.args, **self.kwargs]

  def start[self]:
    if not self.is_running:
      self.next_call += self.interval
      self._timer = threading.Timer[self.next_call - time.time[], self._run]
      self._timer.start[]
      self.is_running = True

  def stop[self]:
    self._timer.cancel[]
    self.is_running = False

Những bài viết liên quan

  • Hơn 20 cuốn sách Python
  • Tải xuống tệp lớn trong python với các yêu cầu
  • Giải mã dữ liệu XDR bằng Python

Trò chuyện với tôi

Tôi hy vọng bạn thích Hướng dẫn Python này💗. Bây giờ, đừng ngần ngại để lại tin nhắn tại haxratali0@gamil. com. Tôi trả lời mọi thư tôi nhận được. tôi sẽ rất vui được trò chuyện với bạn

Chủ Đề