[英]Python Apscheduler with processes (multiprocessing)
我正在嘗試通過 Apscheduler 模塊運行進程(多處理模塊)
sched = BackgroundScheduler(executors=executors)
sched.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)
#sched.add_job(run_processes, trigger='cron', hour='14', minute='06')
sched.add_job(run_processes) # starts it a once
sched.start()
run_processes 看起來像這樣
def run_processes():
print ("starting p1")
print ("starting p2")
##run_process_1()
##run_process_2()
p1 = Process(target = run_process_1, args = ())
p2 = Process(target = run_process_2, args = ())
p1.start()
p2.start()
print p1, p1.is_alive()
print p2, p2.is_alive()
p1.join()
p2.join()
print ("finished")
當我在沒有 Apscheduler 的情況下啟動 run_processes() 時,它運行正常。 當我通過 Apscheduler 運行它時,進程似乎開始了(有新的 Python 實例),但隨后似乎等待或掛起什么都不做。
有沒有人知道那里有問題以及可能如何解決?
你可以試試simple-scheduler 。 它具有生成子進程的能力,無需任何努力。
from simple_scheduler.recurring import recurring_scheduler
from multiprocessing import Process
def f1():
print("Hi")
def f2():
print("...")
def run_processes():
p1 = Process(target = f1)
p1.start()
p2 = Process(target = f2)
p2.start()
p1.join()
p2.join()
print("finished")
recurring_scheduler.add_job(target=run_processes,
period_in_seconds=5,
job_name="run_processes")
recurring_scheduler.job_summary()
recurring_scheduler.run()
recurring_scheduler.job_summary()
輸出是
run_processes [recurring | 5-second(s)] running in 11870
Hi
...
finished
Hi
...
finished
Hi
...
finished
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.