在 Python 运行 计划事件函数和 while 循环函数与多进程与池
In Python run scheduled event function and while loop function with multiprocess with pool
我有两个功能。一个是 celen(),它检查日历并制定执行计划,另一个是无限 while 循环,tech()。我尝试通过多进程 运行,在 shell 上看不到任何打印,最后执行了以下代码,至少显示了第一个进程的输出。
但是,当第一个进程/带有 apsscheduler 运行ning 的日历事件显示所有待处理的作业时,第二个 job/function,无限循环不会开始!
我怎样才能 运行 同时使用 multiprocess/subprocess/multithreading 而我仍然可以看到 shell 或两个函数的任何地方的输出?
def trade():
return(calen(),tech())
with Pool(cpu_count()) as p:
results = p.map(trade())
print(list(results))
之前我也试过
if __name__ == '__main__':
with Pool(processes=2) as pool:
r1 = pool.apply_async(calen, ())
r2 = pool.apply_async(tech, ())
print(r1.get(timeout=120))
print(r2.get(timeout=120))
如果有人能解决如何 运行 while 循环和预定事件同时输出可见,我将不胜感激。
我想我在使用 apscheduler 时犯了错误。 Apschduler it self 运行 multiprocess with schdule 也在 interval/while loop.
while 循环应该从 apscheduler 执行,而不是作为单独的函数。
相反,我尝试单独进行,一个使用 apsscheduler,另一个使用普通的 while 循环。当 apscheduler 启动时,它正在阻止任何其他操作。
这对我有帮助https://devcenter.heroku.com/articles/clock-processes-python
它实际上也是多进程的好解决方案(据我所知)
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', minutes=3)
def timed_job():
print('This job is run every three minutes.')
@sched.scheduled_job('cron', day_of_week='mon-fri', hour=17)
def scheduled_job():
print('This job is run every weekday at 5pm.')
sched.start()
我有两个功能。一个是 celen(),它检查日历并制定执行计划,另一个是无限 while 循环,tech()。我尝试通过多进程 运行,在 shell 上看不到任何打印,最后执行了以下代码,至少显示了第一个进程的输出。
但是,当第一个进程/带有 apsscheduler 运行ning 的日历事件显示所有待处理的作业时,第二个 job/function,无限循环不会开始!
我怎样才能 运行 同时使用 multiprocess/subprocess/multithreading 而我仍然可以看到 shell 或两个函数的任何地方的输出?
def trade():
return(calen(),tech())
with Pool(cpu_count()) as p:
results = p.map(trade())
print(list(results))
之前我也试过
if __name__ == '__main__':
with Pool(processes=2) as pool:
r1 = pool.apply_async(calen, ())
r2 = pool.apply_async(tech, ())
print(r1.get(timeout=120))
print(r2.get(timeout=120))
如果有人能解决如何 运行 while 循环和预定事件同时输出可见,我将不胜感激。
我想我在使用 apscheduler 时犯了错误。 Apschduler it self 运行 multiprocess with schdule 也在 interval/while loop.
while 循环应该从 apscheduler 执行,而不是作为单独的函数。
相反,我尝试单独进行,一个使用 apsscheduler,另一个使用普通的 while 循环。当 apscheduler 启动时,它正在阻止任何其他操作。
这对我有帮助https://devcenter.heroku.com/articles/clock-processes-python
它实际上也是多进程的好解决方案(据我所知)
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', minutes=3)
def timed_job():
print('This job is run every three minutes.')
@sched.scheduled_job('cron', day_of_week='mon-fri', hour=17)
def scheduled_job():
print('This job is run every weekday at 5pm.')
sched.start()