تمام سوالات سوالات بدون پاسخ سوال بپرسید

می خواهم قطعه کدی را بصورت تناوبی در python اجرا کنم. کسی می تواند راهنمایی کند؟

2 پاسخ

سلام
روشی که آقا امید فرمودن هم درسته اما من تو یک برنامه کار بسیار ساده ای انجام دادم. این تکه کد من تو برنامه بود:

def periodicRefresh(self):
    self.rescan()
    self.refreshFiles()
    threading.Timer(5, self.periodicRefresh).start()

حالا فقط کافیست تا زمانی که نیاز دارید این کار شروع بشه برای اولین بار تابع self.periodicRefresh رو فراخوانی کنید. از اون به بعد هر پنچ ثانیه این تابع اجرا خواهد شد.
ضمناً یادم رفت بگم که باید پیمانه threading رو import کنید. تابع threading.Timer هم باعث می شه تا بعد از زمان مشخص شده یک بار تابع مورد نظر شما اجرا بشه. حالا شما در هر بار فراخوانی، فراخوانی بعدی رو تنظیم می کنید. به این صورت می توانید یک اجرای تناوبی با دوره زمانی (interval) مشخص در این مثال 5 ثانیه داشته باشید.


سلام
منظور شما رو از اجرای متناوب درست متوجه نشدم اما اگر چیزی شبیه به interval هست,فکر کنم کد زیر مفید باشه.

import threading
from time import sleep

def intervalExecute(interval, func, *args, **argd):
    ''' @param interval: execute func(*args, **argd) each interval
        @return: a callable object to enable you terminate the timer.
    '''
    cancelled = threading.Event()
    def threadProc(*args, **argd):
        while True:
            cancelled.wait(interval)
            if cancelled.isSet():
                break
            func(*args, **argd) #: could be a lenthy operation
    th = threading.Thread(target=threadProc, args=args, kwargs=argd)
    th.start()
    def close(block=True, timeout=3):
        ''' @param block: if True, block the caller until the thread 
                          is closed or time out
            @param timout: if blocked, timeout is used
            @return: if block, True -> close successfully; False -> timeout
                     if non block, always return False
        '''
        if not block:
            cancelled.set()
            return False
        else:
            cancelled.set()
            th.join(timeout)
            isClosed = not th.isAlive()
            return isClosed
    return close

if __name__=='__main__':
    # sample usage is as follow....

    def testFunc(identifier, txt=''):
        print 'test func entered'
        sleep(2)
        print identifier, txt

    cancellObj = intervalExecute(2.0, testFunc, 1, 'haha')
    help(cancellObj)
    sleep(5.2)
    print cancellObj() #: cancel the intervalExecute timer.
    print 'after calling close'

لینک مرتبط

toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×52
  • ×2
  • ×1
  • ×1
  • پرسیده شده: 20 ژوئیه '12, 11:26
  • بازدید: 2,839 بار
  • آخرین بروزرسانی: 23 ژوئیه '12, 18:12

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها