Julia与Python';什么是日程安排?
我有一段Python代码,a希望将其转换为Julia。我在使用包时使用了python代码。Julia中的等价物是什么?我查看了Julia文档中的“任务和并行计算”部分,但找不到类似的内容。Python中的代码是:Julia与Python';什么是日程安排?,julia,scheduling,Julia,Scheduling,我有一段Python代码,a希望将其转换为Julia。我在使用包时使用了python代码。Julia中的等价物是什么?我查看了Julia文档中的“任务和并行计算”部分,但找不到类似的内容。Python中的代码是: def main(): schedule.every(0.25).seconds.do(read_modbus, 1, 1000, 100, 1) while True: schedule.run_pending() time.sleep
def main():
schedule.every(0.25).seconds.do(read_modbus, 1, 1000, 100, 1)
while True:
schedule.run_pending()
time.sleep(0.05)
你想买一件工作吗?这种形式的Timer
在一个循环中调用函数,因此您需要偶尔从主循环中产生控制,以允许计时器任务运行。您可以通过调用yield
、sleep
、wait
,或执行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
我注意到缺少一个调度库,所以我写了一个 下面是一个使用阻塞调度器的基本示例
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),只有一个阻塞调度器的实现,但应该可以添加多线程。具体的用例是什么?i、 e.有没有一个原因让你不能在正确的时候就
;println(“hello\n”);睡眠(0.25);结束
这不会有帮助,我不知道调用read_modbus函数需要多长时间,但我希望每秒运行4次。如果尝试def read_modbus(*a):打印(datetime.datetime.now());time.sleep(0.19)
您将看到该函数每秒只调用大约2次,尽管有足够的空间运行4次。(如果将schedule.every(0.25)
更改为schedule.every(0.001)
将调用大约4次!)。我想这是因为下一次运行已经安排好了,我知道read_modbus功能足够快(大多数情况下),所以可以在0.25秒内运行。这个函数需要几毫秒才能执行,但我无法准确预测它需要多少时间。所以函数调用后的睡眠不会有帮助,但我想说的是,函数调用后的睡眠(0.25)也有同样的行为。我的示例模拟运行0.19s的read_modbus,使其符合0.25限制(同时还有0.05休眠周期)。但函数大约每0.49秒调用一次。只需复制我的函数并在主函数中尝试它!是的!:)这读取modbus()=(全局ncalls,tstart;println((time()-tstart)/(ncalls!=0?ncalls:1),“”,ncalls);睡眠(0.24);ncalls+=1);tstart=时间();ncalls=0;t=定时器((定时器)->读取modbus(),0,0.25)代码>按我的预期工作。但我没想到这个read_modbus()=(全局ncalls,tstart;println((time()-tstart)/(ncalls!=0?ncalls:1),“”,ncalls);sleep(0.5);ncalls+=1);tstart=时间();ncalls=0;t=定时器((定时器)->读取modbus(),0,0.25)代码>将收敛到0.75秒…我也在寻找Julia调度程序。。。(要在我的情况下替换Python ApsScheduler),请参阅