如何在Julia中使用回调进行异步Web查询?

时间:2015-09-05 02:51:12

标签: asynchronous web-scraping julia

如何在Julia中以异步方式执行以下操作:

JavaScript-ish伪代码将是:

for i in 1:100
    asyncCall(get(webpageAddr[i]), callback(err, data){
        insertToDB(db, coll, data)
    })
end

我感兴趣的是代码的异步部分应该是什么样的(没有那么多的Web查询和数据库访问,我会照顾那些)。 100个查询可以彼此独立(异步)和Julia代码的其余部分运行。

1 个答案:

答案 0 :(得分:2)

朱莉娅更愿意以同步的方式编写代码,而不会失去并行的力量,可以这么说。你不必考虑回调。

下面,您将看到@async宏,它仅在本地进程上运行任务(协程),并且@sync宏等待所有已完成的任务完成。

@sync begin 
    for i=1:10
        @async begin
            println("I mimic the get for $i"); # -> get(webpageAddr[i])
            sleep(rand(1:3)) #waiting for server answer at random number of seconds
            println("I mimic the callback for $i") # -> callback(err, data){insertToDB(db, coll, data}
        end
    end
end

我鼓励你深入研究Julia中并行计算的细节,因为这些都是巨大的。