计算文件夹大小

2023-12-19

我正在尝试并行计算文件夹大小。 也许这是一种天真的做法。 我所做的是将每个分支节点(目录)的计算交给代理。 所有叶节点的文件大小都添加到 my-size 中。 好吧,这不起作用。 :)

“扫描”工作正常,连续。 'pscan' 仅打印第一级的文件。

(def agents (atom []))
(def my-size (atom 0))
(def root-dir (clojure.java.io/file "/"))

(defn scan [listing]
  (doseq [f listing]
    (if (.isDirectory f)
      (scan (.listFiles f))
      (swap! my-size #(+ % (.length f))))))

(defn pscan [listing]
  (doseq [f listing]
    (if (.isDirectory f)
      (let [a (agent (.listFiles f))]
        (do (swap! agents #(conj % a))
            (send-off a pscan)
            (println (.getName f))))
    (swap! my-size #(+ %  (.length f))))))

你知道我做错了什么吗?

Thanks.


不需要使用原子来保持状态。纯函数式:

(defn psize [f]
  (if (.isDirectory f)
    (apply + (pmap psize (.listFiles f)))
    (.length f)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算文件夹大小 的相关文章

  • 为什么我不能将 Clojure 的 :^const 与 Java 字节数组一起使用?

    Using lein repl使用 Clojure 1 4 0 我可以定义一个 constJava 字节数组的 但我不能用它做任何事情 user gt def x byte array map byte 0 1 2 3 user x use
  • clojure 中的反转哈希映射

    我在 clojure 中有哈希映射 key1 value1 key2 value2 key3 value1 我需要将其转换为哈希映射 value1 key1 key3 value2 key2 有 Clojure 方法可以做到这一点吗 clo
  • fn 和 fn* 有什么区别?

    在 Clojure 中 fn 和 fn 有什么区别 当我在语法中引用使用 宏创建的函数时 我看到 fn 例如 在 REPL 中 user gt inc fn p1 342 343 auto clojure core inc p1 342 3
  • 在环形应用程序中捕获异常的惯用方法

    处理环形应用程序中的异常的惯用方法是什么 我想捕获异常并返回 500 页 我怎么做 我在下面的代码中使用了 Mustache 但是它不起作用 def my app try app wrap logger true wrap keyword
  • Clojure 函数 - 返回最后一条语句之前计算的值

    我有一些用 Clojure 编写的测试 这是一个简单的例子 defn test1 start server run pvt and expect PVT 0 stop server 我想返回 run pvt and expect 的结果 但
  • 如何使用 core.async 在 Clojure 中写入日志文件?

    我想使用 core async 作为写入文件的记录器 因此我创建了一个 test txt 文件 将其粘贴在我的资源文件夹中并编写了以下代码 use clojure java io use clojure core async def pri
  • 如何创建惰性序列向量

    运行它按预期工作 defn long seq n lazy seq cons list n somekey n 2 long seq n 1 take 3 long seq 3 gt 3 somekey 6 4 somekey 8 5 so
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • 面向 Clojure 用户的 Java

    我一直在断断续续地使用 Lisp 并且正在赶上 clojure clojure的好处是我可以自然地使用所有的java函数 而clojure的坏处也是我必须自然地了解java函数 例如 我不得不花一些时间 谷歌搜索 来查找 Java 中的平方
  • 宏、Clojure 与 Common Lisp

    我和我的一些朋友正在开发一个新平台 我们想用 lisp 构建它 主要吸引力是宏 我们都使用 Common Lisp 但我想探索 Clojure 的选择 当我提出这一点时 其中一位说宏观体系 较弱 我想知道这是否属实 以及在哪些领域 就您可以
  • Clojure 宏:从地图创建本地变量 [重复]

    这个问题在这里已经有答案了 我有这个示例代码 我通过迭代映射的键值对来创建变量 defmacro block bindings body let mapcat fn k v if symbol k k symbol name k v bin
  • 适用于具有不同数量数据字段的用户的功能

    这个问题是我练习的时候产生的教程中的观察者主题 http mishadoff com blog clojure design patterns episode 10 observer我试图将该功能应用于用户 但无法使用用户的数据字段 例如姓
  • Clojure:生成所有键盘可输入字符

    Context 我想生成可以通过以下方式生成的所有字符 打开记事本 按键盘上的单个键 按住 Shift 按键盘上的单个键 我目前拥有的 concat range int a int z range int A int Z range int
  • 在 Clojure 中退出 Recur 循环

    我想跳出下面的循环 并在第 10 行计算结果为 true 时返回最佳最小移动 我查看了 print 语句的输出 当第 10 行的计算结果为 true 时 它 找到了我正在查找的数据 但仍然重复出现 在 Clojure 中 有没有办法在语句计
  • 获取调用表单的名称空间

    我想要一个宏this ns这样它就会返回调用它的位置的名称空间 例如 如果我有这段代码 ns nstest main require nstest core as nstest defn ns str x gt x getName name
  • 为什么 Clojure MySQL 查询结果中出现“M”

    我有一个返回一行的 Clojure 查询 下面是返回行 映射 的部分打印输出 employer percent 0 00M premium 621 44M 这两列在mysql表中分别是decimal 5 2 和decimal 7 2 为什么
  • 为什么我收到无法动态绑定非动态变量?

    我正在尝试使用 clojure tools trace 命名空间的 dotrace 函数 dotrace my function my function 5 但我收到了这个错误 IllegalStateException 无法动态绑定非动态
  • clojure 有 AES 库吗?

    clojure 有 AES 加密库吗 我应该使用通过 maven 或 clojars 提供的 java 库吗 感谢您的时间和考虑 下面是一个使用可用的 java 加密库的可能更惯用的示例 encrypt and decrypt这里每个都简单
  • 我可以让 lein cloverage 跳过特定测试吗?

    我正在进行一个 Leiningen 项目 其集成测试注释如下 deftest manual test v3 preview preview client http localhost 10313 v3 preview 当我这样做时 这些测试
  • Clojure 符号名称中的美元符号 ($)

    我一直在编写 clojure 解析器并遇到以下语法 defn key Returns the key of the map entry added 1 0 static true java util Map Entry e e getKey

随机推荐

  • Firebase:如何有效跟踪用户/记录更改历史记录

    关于这个问题有很多讨论 但几乎都是在 SQL 中处理 所以据我所知 其中很多内容对于我的问题来说是不适用的 我正在编写一个 CRUD 应用程序react redux a firebase后端 AWS lambda必要时发挥作用 我的用户将有
  • import 和 require 一起使用

    最近我进入了这个 import foo require foo 这听起来很奇怪 因为我通常这样使用 require var foo require foo 或者像这样导入 import foo from foo 那么 这有什么意义呢 查看导
  • eclipse已安装但无法启动java返回退出代码= 1

    我最近安装了 eclipse dsl juno SR1 win32 x86 64 并在提取文件后 当我开始运行 Eclipse 时 出现以下错误 Java 已启动但返回退出代码 1 所需的 java 版本 1 5 我检查了原因 也尝试重新安
  • EF Core 1.0 - Include() 生成多个查询

    我正在使用 EF 7 0 0 rc1 final 以下语句在服务器上生成多个查询 这是正常现象还是我遗漏了什么 Group myGroup dbContext Set
  • 使用 GhostScript 转换为 CMYK 时,CMY 通道上显示黑色

    我正在尝试使用名为的库生成 PDFwkhtml转pdf https wkhtmltopdf org 创建 RGB pdf 然后我使用 Ghostscript 将其转换为 CMYK 格式 但是 pdf 中的黑色文本不是纯黑色 cmyk 0 0
  • 如何动态分配 github 操作中的运行值

    name test if conditions name test if conditions on push branches master test env TEST BRANCH test EMPTY VALUE jobs test
  • 从字符串中过滤字符[重复]

    这个问题在这里已经有答案了 我需要创建一个函数 它接受两个字符串作为输入 并返回 str 1 的副本 其中删除了 str2 中的所有字符 第一件事是用 for 循环迭代 str1 然后与 str2 进行比较 为了完成减法 我应该创建一个第三
  • 保存之前和加载之后的数据框状态 - 有什么不同?

    我有一个包含一些 SQL 表达式 合并 case when 等 的 DF 我后来尝试映射 平面映射这个 DF 在那里我得到了Task not serializable由于字段包含 SQL 表达式而导致错误 为什么我需要 map flatMa
  • 有效识别差异

    每天 我们都会收到来自不同供应商的不同格式 CSV XML 自定义 的巨大文件 我们需要将这些文件上传到数据库中以进行进一步处理 问题是这些供应商将发送其数据的完整转储 而不仅仅是更新 我们有一些应用程序 我们只需要发送更新 即仅发送更改的
  • Swift 中 java 的 instanceof 相当于什么?

    就像java的instanceOf关键字一样 Swift中的等价物是什么 java的例子 A a new A boolean isInstanceOfA a instanceof A 这里 isInstanceOfA 为 true 所以我需
  • Httpd.conf 多个 VirtualHost 部分(是:Mono ASP.NET MVC AutoHosting 问题)

    我正在做的正是this https stackoverflow com questions 699487 mono 2 4 autohosting and mvc 703196 703196尝试禁用自动托管 但是现在我收到 多次尝试生成进程
  • Java DatagramSocket 监听广播地址

    我编写了一个简单的测试类 旨在监听 Eth 并接收所有UDP数据包 发送至端口5001 public class Main public static void main String args throws SocketException
  • 如何解决 IIS7.0 上的“HTTP 错误 500.19 - 内部服务器错误”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是什么原因导致此错误 我该如何修复它 详细错误信息模块 IIS Web 核心通知开始请求处理者尚未确定错误代码0x8007052e配置错误
  • 如何在 DataReader 上实现 Peek() 函数?

    似乎没有一个Peekado net 中 DataReader 上的方法 我希望能够在循环阅读器之前执行一些一次性处理 并且如果能够查看第一行中的数据而不导致后续迭代跳过它 那就太好了 实现这一目标的最佳方法是什么 我正在使用一个SqlDat
  • 在网站之间安全地传输用户

    这是场景 您有两个存在于不同环境中的独立网站 即不同的数据库 不同的 Web 服务器 域 您可以完全控制两个站点的代码 但从上面的观点来看 它们不能直接与对方的数据库进行通信 您必须将用户从站点 A 安全地转移到站点 B 实现这一点的最佳方
  • 如何使文本在 HTML 页面中垂直和水平居中

    我对Java C 数据库 网络等有一些经验 但是与Html相关的任何东西我都是初学者 我唯一想要的就是在页面中间居中两个单词 这个页面只会有这两个词 WORD1 WORDWORDWORDWORD2 我尝试过一些所见即所得的软件 比如 Kom
  • Rails UJS“开启”处理ajax事件

    我在 Rails 应用程序中使用 jQuery 方法 on 来将事件附加到并不总是存在的表单上 当 myForm 附加到文档时 它似乎没有附加事件处理程序 这是UJS的建议用法on myForm on ajax complete funct
  • 在 Swift 中调用 CGPatternCreate

    我想知道如何将以下 Objective C 方法转换为 Swift 函数 CGPatternRef pattern CGPatternCreate NULL rect CGAffineTransformIdentity 24 24 kCGP
  • Java Swing UI 测试驱动程序替换 Fest [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有 Fest 的替代品 以便替代品可以以黑盒方式 不是 JUnit 驱动 Java Swing UI
  • 计算文件夹大小

    我正在尝试并行计算文件夹大小 也许这是一种天真的做法 我所做的是将每个分支节点 目录 的计算交给代理 所有叶节点的文件大小都添加到 my size 中 好吧 这不起作用 扫描 工作正常 连续 pscan 仅打印第一级的文件 def agen