¡°Ò»Æð²Ý¡±¸ßÇå×ÊÔ´ÊÇʲôÒâ˼£¿Ò»ÎÄ¿´¶®½¹µã¼ÄÒåÓëÒªº¦µã

À´Ô´£ºÖ¤È¯Ê±±¨Íø×÷Õߣº
×ÖºÅ

Óû§ÌåÑ飺¸ßÇå×ÊÔ´µÄ½âËøÖ®ÂÃ

ÔÚ¡°Ò»Æð²Ý¡±Æ½Ì¨ÉÏ£¬ÎÒÃDz»µ«Ìṩ¸ßÖÊÁ¿µÄ¸ßÇå×ÊÔ´£¬»¹ÖÂÁ¦ÓÚΪÓû§Ìṩ×î¼ÑµÄÓû§ÌåÑé¡£ÎÒÃǵÄ?ÍøÕ¾Éè¼Æ¼ò½àÃ÷ÁË£¬×ÊÔ´·ÖÀàÇåÎúÃ÷ÁË£¬ÈÃÄú¿ÉÒÔÇáËÉÕÒµ½×Ô¼ºÏ²»¶µÄ?×ÊÔ´¡£ÎÒÃǵĿͷþÍŶÓËæÊ±ÔÚÏߣ¬½â¾öÄúÔÚʹÓÃÀú³ÌÖÐÓöµ½µÄÈκÎÎÊÌâ¡£

¸ßÇå×ÊÔ´µÄ½âËøÖ®Âã¬ÊÇÒ»¶Î³äÂú¾ªÏ²ºÍÂú×ãµÄÂóÌ¡£ÔÚ¡°Ò»Æð²Ý¡±Æ½Ì¨ÉÏ£¬ÎÒÃÇÏ£Íûÿһ¸öÓû§¶¼ÄÜÔÚ¸ßÇå×ÊÔ´µÄÊÀ½çÖÐÕÒµ½×Ô¼ºµÄÀÖȤ£¬ÏíÊܵ½ÄÇЩ´¥Êֿɼ°µÄ?¼«ÀÖ¡£

Êý×Ö»¯×ªÐÍµÄÆ«Ïò

ÔÚÏß½ÌÓý£º¸ßÇå×ÊÔ´ºÍ¼¯ÌåÏàÖú´´×÷ÊÇÔÚÏß½ÌÓýƽ̨µÄ½¹µã¡£Í¨¹ý¸ßÇåÊÓÆµ¡¢¸ßÇåͼƬ¡¢»¥¶¯Ê½Ñ§Ï°ÄÚÈݵÈ£¬ÎÒÃÇÄܹ»ÎªÑ§ÉúÌṩԽ±¬·¢¶¯¡¢Ö±¹ÛµÄѧϰÌåÑé¡£Ô¶³Ì°ì¹«£ºÔÚÊý×Ö»¯×ªÐ͵ÄÀú³ÌÖУ¬Ô¶³Ì°ì¹«¹¤¾ßµÄÉú³¤Àë²»¿ª¸ßÇå×ÊÔ´ºÍ¼¯ÌåÏàÖú´´×÷¡£¸ßÇ弯»á¼Í¼¡¢¸ßÇåЭ×÷ÎĵµµÈ£¬¶¼ÊÇÔ¶³Ì°ì¹«µÄÖØÒª×é³É²¿·Ö¡£

ÖÇÄÜÒ½ÁÆ£º¸ßÇå×ÊÔ´ÔÚÖÇÄÜÒ½ÁÆÖÐÒ²·¢»Ó×ÅÖØÒª×÷Ó᣸ßÇåÒ½ÁÆÍ¼Ïñ¡¢¸ßÇåÊÖÊõÊÓÆµµÈ£¬Äܹ»ÎªÒ½ÁÆ×¨ÒµÈËÊ¿ÌṩԽ·¢ÏêʵµÄÐÅÏ¢£¬ÌáÉýÒ½ÁÆÐ§À͵ÄÖÊÁ¿¡£

¼¯ÌåÏàÖúµÄÓÅÊÆ

֪ʶ¹²Ïí£ºÍ¨¹ý¼¯ÌåÏàÖú£¬¸÷¸ö³ÉÔ±¿ÉÒÔ¹²ÏíËûÃǵÄ֪ʶºÍ¼¼Êõ£¬ÕâÑùÄܹ»´ó´óÌá¸ß´´×÷µÄÖÊÁ¿ºÍЧÂÊ¡£´´?ÐÂÐÔÌáÉý£º¶àÑù»¯µÄ¿´·¨ºÍרҵÅä¾°Äܹ»Òý·¢¸ü¶àµÄÁ¢Òì˼ά£¬´Ó¶ø´´Á¢³ö¸ü¾ß´´?ÒâºÍÆæÌØÐÔµÄÄÚÈÝ¡£Î£º¦·Öµ££º¼¯ÌåÏàÖú¿ÉÒÔÓÐЧ·Öµ£´´×÷Àú³ÌÖпÉÄÜ·ºÆðµÄÖÖÖÖΣº¦£¬Ê¹µÃ×ÊÔ´´´Á¢Ô½·¢ÎȽ¡¡£

ÒôÀÖµÄÌý¾õÊ¢Ñç

ÒôÀÖÊÇÒ»ÖÖÄܹ»Ö±½Ó´¥¶¯ÐÄÁéµÄÒÕÊõÐÎʽ¡£ÔÚ¡°Ò»Æð²Ý?¡±Æ½Ì¨ÉÏ£¬ÎÒÃÇΪÄú¾«Ñ¡ÁËÖÖÖÖÀàÐ͵ĸ߱£ÕæÒôÀÖ×ÊÔ´£¬´Ó¹Åµäµ½ÏÖ´ú£¬´Ó?Á÷Ðе½¶ÀÁ¢£¬Ó¦Óо¡ÓС£Ã¿Ò»¸öÒô·û¶¼¾­¹ý¾«ÐÄ´òÄ¥£¬ÈÃÄúÔÚ¼ÒÖÐÏíÊܵ½ÕæÕýµÄÒôÀÖ÷Ò÷ÑÊ¢Ñç¡£

¸ß±£ÕæÒôÀÖ×ÊÔ´µÄ½âËø£¬ÈÃÄú¿ÉÒÔÔÚÈκÎʱºò£¬ÈκÎËùÔÚ£¬ÏíÊܵ½?×î´¿´âµÄÒôÀÖÌåÑé¡£ÎÞÂÛÊǾ²¾²ñöÌý¹ÅµäÒôÀÖ£¬ÕÕ¾ÉÌø¶¯ÐÄÌøµÄÁ÷ÐиèÇú£¬¸ßÇå×ÊÔ´¶¼ÄÜ´ø¸øÄúÎÞÓëÂױȵÄÌý¾õÏíÊÜ¡£ÌرðÊǹØÓÚÄÇЩϲ»¶Ì½Ë÷ÒôÀÖϸ½ÚµÄϲºÃÕߣ¬¸ß±£ÕæÒôÀÖ×ÊÔ´µÄ?½âËøÎÞÒÉÊÇÒ»³¡Ìý¾õÊ¢Ñç¡£

´úÂëʵÏÖ£º

importtimeimportthreadingfromcollectionsimportdequeclassTaskScheduler:def__init__(self):self.tasks=deque()self.task_lock=threading.Lock()self.running=Falseself.task_thread=Nonedefadd_task(self,task_name,interval):withself.task_lock:self.tasks.append((task_name,interval))defremove_task(self,task_name):withself.task_lock:self.tasks=deque((task,interval)fortask,intervalinself.tasksiftask!=task_name)deflist_tasks(self):withself.task_lock:return(task,interval)fortask,intervalinself.tasksdefexecute_task(self):whileself.running:withself.task_lock:current_time=time.time()#Checkifanytaskneedstobeexecutednext_task=Nonefortask,intervalinself.tasks:next_execution_time=current_time+intervalifnext_taskisNoneornext_execution_time0:time.sleep(sleep_time)print(f"Executingtask:{task}at{time.ctime()}")defstart(self):ifnotself.running:self.running=Trueself.task_thread=threading.Thread(target=self.execute_task)self.task_thread.start()defstop(self):self.running=Falseifself.task_threadandself.task_thread.is_alive():self.task_thread.join()#ʾÀýʹÓÃif__name__=="__main__":scheduler=TaskScheduler()scheduler.add_task("Task1",10)#ÿ10ÃëÖ´ÐÐÒ»´ÎTask1scheduler.add_task("Task2",5)#ÿ5ÃëÖ´ÐÐÒ»´ÎTask2print(scheduler.list_tasks())#Êä³öÄ¿½ñËùÓеÄÈÎÎñÁбíscheduler.remove_task("Task2")print(scheduler.list_tasks())#Êä³öÄ¿½ñËùÓеÄÈÎÎñÁбíscheduler.start()time.sleep(60)#ÈÃÈÎÎñÔËÐÐÒ»¶Îʱ¼äscheduler.stop()

¼Í¼ƬµÄÕæÊµÖ®ÂÃ

¼Í¼Ƭ×÷ΪһÖÖÌØÊâµÄÊÓÌýÒÕÊõ£¬Í¨¹ý¸ßÇå×ÊÔ´µÄ½âËø£¬¿ÉÒÔÈÃÄúÉîÈëÁ˽âÊÀ½ç¸÷µØµÄÎÄ»¯¡¢ÀúÊ·ºÍ×ÔÈ»ÏÖÏó¡£ÔÚ¡°Ò»Æð²Ý¡±Æ½Ì¨ÉÏ£¬ÎÒÃÇΪÄú¾«Ñ¡ÁËÖÖÖÖÀàÐ͵ļͼƬ£¬´ÓÀúÊ·¼Í¼Ƭµ½×ÔÈ»¼Í¼Ƭ£¬Ó¦Óо¡ÓС£Ã¿Ò»¸ö¼Í¼Ƭ¶¼¾­¹ý¾«ÐÄÖÆ×÷ºÍ¸ßÖÊÁ¿´¦Àí£¬È·±£?ÿһ¸öϸ½Ú¶¼ÄÜ·ºÆð¸øÄú×îÕæÊµµÄÊÀ½ç¡£

¸ßÇå¼Í¼Ƭ×ÊÔ´µÄ½âËø£¬ÈÃÄú¿ÉÒÔÔÚ¼ÒÖÐÉîÈëÁ˽âÄÇЩÄÑÒÔ´¥¼°µÄÕæÊµÊÀ½ç¡£Ã¿Ò»¶Î»­Ã棬ÿһ¸öÉùÒô£¬¶¼ÊǶÔÕæÊµÊÀ½çµÄÕæÊµÔÙÏÖ¡£¸ßÇå×ÊÔ´µÄ½âËøÈÃÕâЩ¼Í¼ƬԽ·¢Ï¸Ä壬ÈÃÄúÔÚÔ¢Ä¿Ê±ËÆºõÉíÁÙÆä¾³£¬ÕæÕý¸ÐÊܵ½ÄÇЩÏÊ»îµÄÊÀ½ç¡£

ʾÀý£º

#´´Á¢ÈÎÎñµ÷Àíϵͳscheduler=TaskScheduler()#Ìí¼ÓÈÎÎñscheduler.add_task("Task1",10)#ÿ10ÃëÖ´ÐÐÒ»´ÎTask1scheduler.add_task("Task2",5)#ÿ5ÃëÖ´ÐÐÒ»´Î?Task2#¼ì²ìÈÎÎñÁбíprint(scheduler.list_tasks())#Êä³öµ±?ǰËùÓеÄ?ÈÎÎñÁбí#ɾ³ýÈÎÎñscheduler.remove_task("Task2")#¼ì²ìÈÎÎñÁбí?print(scheduler.list_tasks())#Êä³öÄ¿½ñËùÓеÄÈÎÎñÁбí#¿ªÊ¼Ö´ÐÐÈÎÎñscheduler.start()

У¶Ô£º³ÂÇïʵ(p6mu9CWFoIx7YFddy4eQTuEboRc9VR7b9b)

ÔðÈα༭£º ²ñ¾²
ΪÄãÍÆ¼ö
Óû§ÆÀÂÛ
µÇ¼ºó¿ÉÒÔ̸»°
ÍøÓÑÆÀÂÛ½ö¹©Æä±í´ï¸öÈË¿´·¨£¬²¢²»±êÃ÷֤ȯʱ±¨Á¢³¡
ÔÝÎÞÆÀÂÛ