python3.x - Comment implémenter Python pour exécuter une fonction spécifiée toutes les 10 secondes ? Le processus d'attente ne peut pas interrompre le thread principal !
扔个三星炸死你
扔个三星炸死你 2017-06-12 09:22:32
0
7
1892

Comme mentionné, donnez-moi quelques conseils !

扔个三星炸死你
扔个三星炸死你

répondre à tous(7)
小葫芦

Vous pouvez ouvrir un autre fil de discussion pour faire cela spécifiquement. Le code py2 est le suivant S'il s'agit de py3, veuillez ajuster la syntaxe vous-même

.
# coding: utf8
import threading
import time

# 真正要执行的函数
def t1():
    print ('ok')

# 每隔10秒钟执行
def t2():
    while 1:
        t1()
        time.sleep(10)

if __name__ == '__main__':
    t = threading.Thread(target=t2)
    t.start()

    # 此处写你主线程要处理的事情.....

    t.join()
某草草

threading.Timer

import threading as thd
import time

def fn():
    print(time.time())
    thd.Timer(10,fn).start()
    
fn()
迷茫

Si vous démarrez directement un processus enfant, le processus enfant existera toujours lorsque vous quitterez le processus principal. Il est recommandé de le définir comme processus démon

.
import sys
import signal
import threading
import time
from datetime import datetime

def quit(signum, frame):
    sys.exit()

def process_fun():
    while True:
        print datetime.now()
        time.sleep(1)

if __name__ == '__main__':
    try:
        signal.signal(signal.SIGINT, quit)
        signal.signal(signal.SIGTERM, quit)

        p = threading.Thread(target=process_fun)
        #注册成为主进程
        p.setDaemon(True)
        p.start()

        #如果没有主进程, 就用循环代理
        while True:
            pass

    except Exception as e:
        pass
左手右手慢动作

Vous pouvez envisager Advanced Python Scheduler (http://apscheduler.readthedoc...
Il peut réaliser une conception de timing extrêmement complexe, toutes les quelques secondes, minutes ou à un moment spécifique d'un certain jour, etc., il peut bloquer le processus, et cela peut être en arrière-plan, tout cela selon vos besoins

.
左手右手慢动作
# -*- coding: utf-8 -*-
import gevent
import time


class Timer(object):
    """定时器,定时执行指定的函数
    """

    def __init__(self, start, interval):
        """
        @start, int, 延迟执行的秒数
        @interval, int, 每次执行的间隔秒数
        """
        self.start = start
        self.interval = interval

    def run(self, func, *args, **kwargs):
        """运行定时器
        :param func: callable, 要执行的函数
        """
        time.sleep(self.start)
        while True:
            func(*args, **kwargs)
            time.sleep(self.interval)


def send_message():
    pass


if __name__ == "__main__":
    scheduler = Timer(5, 10 * 60)
    gevent.spawn(scheduler.run(send_message))
typecho

Module de planification de tâches Python – APScheduler (cliquez pour voir)

APScheduler est un framework de tâches planifiées Python, très pratique à utiliser. Il fournit des tâches basées sur la date, un intervalle de temps fixe et le type de crontab, et peut conserver les tâches et exécuter des applications en mode démon.

Ce qui suit est un exemple simple, imprimant hello world toutes les 10 secondes

from apscheduler.schedulers.blocking import BlockingScheduler
def my_job():
    print 'hello world'
 
sched = BlockingScheduler()
sched.add_job(my_job, 'interval', seconds=10)
sched.start()
Peter_Zhu
#-*- coding:utf8 -*- 

import multiprocessing
import time

def f():
    print time.ctime(),'这是子进程,每10S执行一次'

def work():
   while 1:
       f()
       time.sleep(10)

if __name__ == '__main__':
    p = multiprocessing.Process(target=work,)
    p.start()
    p.deamon = True
    while 1:
        print '这是主进程,每1秒执行一次'
        time.sleep(1)

Résultat de l'exécution :

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal