python3.x - Bagaimana untuk melaksanakan python untuk menjalankan fungsi tertentu setiap 10 saat? Proses menunggu tidak boleh mengganggu utas utama!
扔个三星炸死你
扔个三星炸死你 2017-06-12 09:22:32
0
7
1895

Seperti yang dinyatakan, sila berikan saya nasihat!

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

membalas semua(7)
小葫芦

Anda boleh membuka utas lain untuk melakukan ini secara khusus Kod py2 adalah seperti berikut

# 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()
迷茫

Jika anda memulakan proses anak secara langsung, proses anak akan sentiasa wujud apabila anda keluar dari proses utama Adalah disyorkan untuk menetapkannya sebagai proses daemon

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
左手右手慢动作

Anda boleh mempertimbangkan Penjadual Python Lanjutan (http://apscheduler.readthedoc...
Ia boleh menjalankan reka bentuk pemasaan yang sangat kompleks, setiap beberapa saat, minit atau saat tertentu pada hari tertentu, dsb., ia boleh menyekat proses, dan ia boleh berada di latar belakang, semuanya mengikut keperluan anda

.
左手右手慢动作
# -*- 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

Modul penjadualan tugas Python – APScheduler (klik untuk melihat)

APScheduler ialah rangka kerja tugas berjadual Python, yang sangat mudah digunakan. Ia menyediakan tugas berdasarkan tarikh, selang masa tetap dan jenis crontab, dan boleh meneruskan tugas dan menjalankan aplikasi dalam mod daemon.

Berikut ialah contoh mudah, mencetak hello world setiap 10 saat

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)

Hasil pelaksanaan:

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan