什么是Julia相当于Python的计划包?

时间:2017-10-13 12:33:40

标签: julia scheduling

我有一段想要转换为Julia的Python代码。我使用schedule包的python代码。朱莉娅的等价物是什么,我查看了"任务和并行计算"参与Julia文档,但我找不到类似的东西。 Python中的代码是:

def main():
    schedule.every(0.25).seconds.do(read_modbus, 1, 1000, 100, 1)
    while True:
        schedule.run_pending()
        time.sleep(0.05)

2 个答案:

答案 0 :(得分:5)

Timer会有效吗?这种形式的Timer会在Task中调用您的函数,因此您需要偶尔从主循环中获得控制权以允许计时器任务运行。你可以通过调用yieldsleepwait或做IO来获得收益,这里我会显示等待计时器。

tstart = time()
ncalls = 0
read_modbus() = (global ncalls+=1;@show (time()-tstart)/ncalls,ncalls)
t=Timer((timer)->read_modbus(),0,0.25)

while true
    wait(t) # wait for timer to go off
    println("mainloop $ncalls")
end

答案 1 :(得分:1)

我注意到Julia的调度库丢失了所以我写了一个https://github.com/scls19fr/ExtensibleScheduler.jl

以下是使用阻塞调度程序的基本示例。

using ExtensibleScheduler

function read_modbus(p1, p2, p3, p4)
    println("Read_modbus with $p1 $p2 $p3 $p4")
end

sched = BlockingScheduler()

add(sched, Action(read_modbus, 1, 1000, 100, 1), Trigger(Dates.Millisecond(250)))

run(sched)

虽然这是一项正在进行中的工作但欢迎贡献者。

目前(2017-12),只有阻塞调度程序的实现,但应该可以添加多线程。

相关问题