You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需在文件内使用dofile,同时运行多个带循环的Lua文件?

可行,两种方案任你选

一、单进程内用协程实现"伪并行"

Lua本身是单线程的,但可以通过协程让两个循环交替执行,看起来像同时运行。你只需要写一个简单的启动脚本:

创建run_both.lua:

-- 把两个脚本的逻辑封装成函数
local function run_script1() dofile("script1.lua") end
local function run_script2() dofile("script2.lua") end

-- 创建两个协程
local co1 = coroutine.create(run_script1)
local co2 = coroutine.create(run_script2)

-- 交替调度协程
while true do
    -- 执行script1的协程一步
    local ok1, err1 = coroutine.resume(co1)
    if not ok1 then print("script1出错:", err1) break end

    -- 执行script2的协程一步
    local ok2, err2 = coroutine.resume(co2)
    if not ok2 then print("script2出错:", err2) break end

    -- 两个协程都结束就退出
    if coroutine.status(co1) == "dead" and coroutine.status(co2) == "dead" then
        break
    end
end

运行时直接执行lua run_both.lua即可。但要注意:这种方式是交替执行,不是真正的并行。如果你的循环是CPU密集型的,必须在每个循环里加coroutine.yield()主动交出控制权,比如:

script1.lua里的循环改成:

while true do
    -- 你的业务逻辑
    print("script1在运行")
    coroutine.yield() -- 让给另一个协程执行
end

二、多进程实现真正并行(推荐)

如果要让两个脚本真正同时运行(比如都是CPU密集型任务),直接用系统命令启动两个独立的Lua进程就行,完全不用额外写Lua脚本:

Windows命令行:

start lua script1.lua & start lua script2.lua

Linux/macOS终端:

lua script1.lua & lua script2.lua &

这样两个脚本会作为独立进程并行执行,互相不干扰,完美符合你"仅调用文件名"的需求。

总结

  • 伪并行(单进程内交替):适合IO密集型任务,需要写启动脚本;
  • 真并行(多进程):直接用系统命令,简单粗暴,满足你的核心需求。

内容的提问来源于stack exchange,提问作者SDFGSBE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:55:20