Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia与Python';什么是日程安排?_Julia_Scheduling - Fatal编程技术网

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

我有一段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(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),请参阅