使用python Scheduler库以多核cpu运行并行任务的方法是什么?
在这个并行任务示例中,是否有添加超时和一些顺序相关元素以及异常处理的示例?
答案 0 :(得分:0)
由于您根本没有发布任何代码,因此很难确定您要询问的内容以及要实现的目标。
话虽如此,我想如果您想在python中实现 True 并行性,则要使用的库应为multiprocessing
。使用multiprocessing
,您可以从主进程中启动独立的python进程,并使它们同时在不同的物理内核上运行。
如果任务是相互依赖的,那么您需要使用Queues
,Pipes
之类的进程间通信技术或multiprocessing
库本身提供的{{1} } multiprocessing
,array
,value
multiprocessing
。
对于独立任务,您不必担心同步流程状态,但是,如果您需要合并独立任务的结果,则可以使用Manager
multiprocessing
和{{1 }}。
但是,如果您打算做的是同时执行任务并不想浪费任何CPU时间,则可以查看pool
库,尽管map
有其自身的复杂之处,{ {1}}是最大的一个。
threading
是您要研究的另一种范式,它采用完全不同的并发方法,但是threading
有其自己的生态系统,并且该生态系统的所有部分都需要实际实现所需的最终结果否则整个事情都会炸毁。
答案 1 :(得分:0)
如果您正在寻找使用多处理进行调度,那么 simple-scheduler 应该可以完成您的工作。
例如
from time import sleep, ctime, time
from simple_scheduler.event import event_scheduler
event_scheduler.timezones()
TZ = "Asia/Kolkata"
WHEN = ["mon|09:**", "*|10:45"] #[mon/tue/wed/thu/fri/sat/sun] or "*" for all days
# correct argument precedence in a function
def print_args(a, b=1, *args, **kwargs):
print(ctime(time()), a, b, args, kwargs)
# the above print_args function would be called twice,
# so to differentiate between then use "job_name"
event_scheduler.add_job(target = print_args,
args = (0,), # don't forget "," for single arguments
kwargs = {"b":2},
when = WHEN,
tz = TZ,
job_name = "print-args-1")
event_scheduler.add_job(target= print_args,
args = (0, 2, "arg1", "arg2"),
kwargs = {"key1":"value1",
"key2":"value2"},
when = WHEN,
tz = TZ,
job_name = "print-args-2")
event_scheduler.verbose = True # (default)
event_scheduler.job_summary()
event_scheduler.run()
event_scheduler.job_summary()
sleep(200)
event_scheduler.remove_job("print-args-2")
sleep(5)
event_scheduler.clear()