python3.x - python每隔10秒運行一個指定函數怎麼實現?等待過程不能中斷主線程!
扔个三星炸死你
扔个三星炸死你 2017-06-12 09:22:32
0
7
1897

如題,求教!

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

全部回覆(7)
小葫芦

可以透過另開一條執行緒, 去專門做這件事情, py2程式碼如下, 如果是py3請自行調整下語法

# 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()
某草草

線程。定時器

雷雷
迷茫

如果直接開子程序的話,退出主程序時子程序會一直存在, 建議設定成守護程序

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

可以考慮Advanced Python Scheduler(http://apscheduler.readthedoc...
能夠進行極其複雜的定時設計,每個幾秒幾分鐘,或者是某天的具體一刻等等,可以阻塞進程,可以在後台,全部按照你的要求。

左手右手慢动作

雷雷

typecho

Python任務調度模組 – APScheduler(點擊查看)

APScheduler是一個Python定時任務框架,使用起來十分方便。提供了基於日期、固定時間間隔以及crontab類型的任務,並且可以持久化任務並以daemon方式運行應用程式。

下面是一個簡單的例子,每隔10秒列印一次hello world

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)

執行結果:

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板