【问题标题】:Python Multiprocessing start a process during a for loopPython多处理在for循环期间启动一个进程
【发布时间】:2021-11-22 11:00:13
【问题描述】:

我有一个简单的 for 循环扫描文档,我希望它在继续执行主 for 循环的同时启动第二个进程

def main():
    combatDelta = datetime.timedelta(0, 5, 0 , 0)
    combatlog = []
    othercombats = []
    times = []
    with open(path, "r") as file:
        firstCombat = True
        counter = 0
        combatstart = None
        lastTime = None
        betweencombatDetla = None
        start = timer.time()
        for line in file:
            temp2 = line
            temp2 = temp2.split("::")
            temp = temp2[0]
            temp = temp.split(":")
            time = datetime.datetime(2000 + int(temp[0]), int(temp[1]), int(temp[2]), int(temp[3]), int(temp[4]),
                                     int(temp[5][0] + temp[5][1]), int(temp[5][3]) * 100000)
            if counter == 0:
                combatstart = time
                lastTime = time
            else:
                betweencombatDetla = time - lastTime
                lastTime = time
                if betweencombatDetla > combatDelta:
                    print("next combat")
                    if firstCombat:
                        p = Process(target=combatAnalyis())
                        p.start()
                        firstCombat = False



            combattime = time - combatstart
            if firstCombat:
                combatlog.append(line)
            else:
                othercombats.append(line)
            print(len(combatlog))
            print(len(othercombats))
            counter += 1

(对不起,如果代码有点乱) (目的是在继续for循环的同时执行“combatAnalysis”函数,目前这个函数只是一个for循环打印数字作为占位符以表明多处理正在工作) 根据我尝试实现的文档,但它现在首先执行第二个函数,同时不继续 for 循环

【问题讨论】:

    标签: python python-3.x python-multiprocessing


    【解决方案1】:

    尝试使用线程库运行线程。使用threading.Thread(target=combatAnalyis),然后使用.start() 启动它。确保不要在目标函数的名称后添加 parantheses-()。

    【讨论】:

    • 这似乎有帮助,线程模块确实有效的任何原因,但多处理确实有效(只是想了解一下我在这里做错了什么)
    • 不知道。当您使用多处理时,请尝试在战斗分析之后删除括号。这会导致各种问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2020-09-25
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多