多线程 多进程 没有效果,是什么原因?

需要处理几百个csv文件。同样用python也写了, 2个在单线程下输出结果一致。为了再加快速度, 采用多线程/多进程情况下, 运行速度没有提升。但是python在多进程版本提升已超过julia, 这个是因为什么?

多线程版本

function cl(fname)
    df=CSV.read(fname,DataFrame)
    # 一些运算
end
# 几百个文件
function f()
    fnames=readdir("../cache")
    Threads.@threads for i in eachindex(fnames)
        cl("../cache/" * fnames[i])
    end

end

多进程版本

@everywhere function cl(fname)
    df=CSV.read(fname,DataFrame)
    # 一些运算
end
# 几百个文件
function f()
    fnames=readdir("../cache")
    @sync @distributed for i in eachindex(fnames)
        cl("../cache/" * fnames[i])
    end

end

因为刚入门, 网上找了很多资料, 感觉案例很少, 不知道多线程 多进程 写法是否有问题?

py怎么多线程的,开了几个线程,看cpu占用百分比都一样吗

同样4个线程 和4个进程 分别对比, python都明显提升, julia 没有, 是不是我写的代码有问题

请提供能够测试的minimal working example,并且展示具体的时间对比;否则大家只能靠猜。

多进程写错了吧,我看的是文档中的手册中的性能建议里的写法(藏得真够深的,julia文档属于手册一类,不是用来学习的,必须吐槽一下):

@sync for ...
    @async begin
        ...
    end
end

这种写法不用调包,直接用,而且比@spawn快。
这里的begin end和for end,可以把多行代码扔给宏,否则只能单行了…

如果你用包的话,for那一行的in要改成=

@distributed for ... = ...