gpt4 book ai didi

Python如何在类内部进行多处理?

转载 作者:太空狗 更新时间:2023-10-29 17:07:05 24 4
gpt4 key购买 nike

我的代码结构如下所示:

Class A:
def __init__(self):
processes = []
for i in range(1000):
p = Process(target=self.RunProcess, args=i)
processes.append[p]

# Start all processes
[x.start() for x in processes]

def RunProcess(self, i):
do something with i...

主要脚本:

myA = A()

我似乎无法让它运行。我收到运行时错误“已尝试在 当前进程已完成其引导阶段。"

我如何让多重处理为此工作?如果我使用线程,它工作正常但它和顺序一样慢......而且我也担心多重处理也会很慢,因为创建进程需要更长的时间?

有什么好的建议吗?非常感谢。

最佳答案

我可以在您的代码中看到一些语法问题:

  • args in Process 需要一个元组,您传递一个整数,请将第 5 行更改为:

    p = Process(target=self.RunProcess, args=(i,))

  • list.append 是一个方法,传递给它的参数应该包含在 () 中,而不是 [],请将第 6 行更改为:

    processes.append(p)

正如@qarma 指出的那样,在类构造函数中启动进程不是好的做法。我将按如下方式构建代码(改编您的示例):

import multiprocessing as mp
from time import sleep

class A(object):
def __init__(self, *args, **kwargs):
# do other stuff
pass

def do_something(self, i):
sleep(0.2)
print('%s * %s = %s' % (i, i, i*i))

def run(self):
processes = []

for i in range(1000):
p = mp.Process(target=self.do_something, args=(i,))
processes.append(p)

[x.start() for x in processes]


if __name__ == '__main__':
a = A()
a.run()

关于Python如何在类内部进行多处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29009790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com