Skip to content

Schedules jobs too often if multiple threads are present #630

Description

@Klimroth

If I schedule two jobs and each job should be run in one thread, the following minimal example does not work

`import schedule
import threading
import time
from datetime import datetime

def do_task_1() -> None:
print(f"{datetime.now().isoformat()} - task 1 execution - thread {threading.current_thread().name} \n")

def do_task_2() -> None:
print(f"{datetime.now().isoformat()} - task 2 execution - thread {threading.current_thread().name} \n")

def task_1_sheduler() -> None:
schedule.every(10).seconds.do(do_task_1)
while True:
time.sleep(1)
schedule.run_pending()

def task_2_sheduler() -> None:
schedule.every(14).seconds.do(do_task_2)
while True:
time.sleep(1)
schedule.run_pending()

def start_thread_1() -> None:
t = threading.Thread(target=task_1_sheduler)
t.start()

def start_thread_2() -> None:
t = threading.Thread(target=task_2_sheduler)
t.start()

start_thread_1()
start_thread_2()
`

I would expect it to conduct do_task_2 every 14 seconds on thread 2 and do_task_1 independently every 10 seconds on thread 1, but it mixes things up

image001

What am I doing wrong?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions