小编Dbo*_*iao的帖子

试图找到一种方法来构建朱莉娅`generator'

我是朱莉娅的新手.我主要在python中编程.

在python中,如果要迭代一大组值,通常会构造一个所谓的生成器来节省内存使用量.这是一个示例代码:

def generator(N):
    for i in range(N):
        yield i
Run Code Online (Sandbox Code Playgroud)

我想知道朱莉娅是否有类似的东西.阅读julia手册后,@ task macro似乎与python中的生成器具有相同(或类似)的功能.然而,经过一些实验,在julia中,内存使用量似乎比通常的数组大.

@time在IJulia中使用来查看内存使用情况.这是我的示例代码:

[更新]:添加generator方法代码
(generator方法)

function generator(N::Int)
    for i in 1:N
        produce(i)
    end
end
Run Code Online (Sandbox Code Playgroud)

(发电机版)

function fun_gener()
    sum = 0
    g = @task generator(100000)
    for i in g
        sum += i
    end
    sum
 end
Run Code Online (Sandbox Code Playgroud)

@time fun_gener()
已用时间:0.420731828秒(已分配6507600字节)

(阵列版)

function fun_arry()
    sum = 0
    c = [1:100000]
    for i in c
        sum += i
    end
    sum
end
Run Code Online (Sandbox Code Playgroud)

@time fun_arry()
已用时间:0.000629629秒(已分配800144个字节)

谁能告诉我为什么@task在这种情况下需要更多空间?如果我想将内存使用量保存为处理大量值,我该怎么办?

generator julia

17
推荐指数
3
解决办法
2855
查看次数

函数没有参数但在Julia中有类型

我最近浏览了一些Julia的源代码,发现一些函数对我来说似乎很神秘.

在Julia源代码中定义了一些函数,它们没有参数但是有类型注释.

例如:abstractarray.jl中的第20行

我尝试了一下这个ndims功能,

似乎ndims可以将类型本身作为参数并返回正确的值:

julia> ndims(AbstractArray{Float64, 2})
       2
julia> ndims([1.1 0.3; 0. 0.5])
       2
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下(::DataType)方法的工作原理吗?或者朱莉娅的意思是什么?

methods types function julia

4
推荐指数
1
解决办法
436
查看次数

标签 统计

julia ×2

function ×1

generator ×1

methods ×1

types ×1