我有一段处理文件的代码,
processFiles :: [FilePath] -> (FilePath -> IO ()) -> IO ()
这个函数会生成一个异步进程,执行一个IO操作。这个IO操作必须通过作业调度系统(例如Slurm)提交到集群中。
由于我必须使用作业调度系统,所以不可能使用cloudHaskell来分发闭包。相反,程序会编写一个包含所需计算的新Main.hs文件,将它与所有主要依赖模块一起复制到集群节点上,然后通过"runhaskell Main.hs [opts]"在远程执行。然后,异步进程应该定期向作业调度系统(使用threadDelay)询问作业是否完成。
有没有办法避免创建新的Main?我能否序列化IO操作并以某种方式在节点上执行它?