在一个类中进行多处理,并在另一个类中使用它的实例



我被困在使用Python的多处理模块。我想在一个类中创建多处理工作者,并将这个类的对象用作另一个类中的复合对象。下面是虚拟代码,其结构看起来与我的原始代码相同。

a.py

import concurrent.futures 
class A:
def __init__(self, basic_input):
self.initial = basic_input
def _worker(self, work):
print(f"Doing some {work} using {self.initial}")
def print_my_work(self, set_of_works):
with concurrent.futures.ProcessPoolExecutor(max_workers=5) as executor:
executor.map(self._worker, set_of_works)

b.py

class B:
def __init__(self, basic_input):
# A is a composite object 
self.a = A(basic_input)

def get_all_works(self):
return {'A', 'B', 'C'}

def processingB(self):
works = self.get_all_works()
self.a.print_my_work(works)

这里我试图在另一个模块中使用B类,如下

check.py

import b
obj = B('Test')
obj.processingB()

低于错误Python multiprocessing运行时错误:在当前进程完成启动阶段之前尝试启动新进程.......

谁能帮帮我?谢谢你阅读这个问题。

搜索你的问题,你会发现一个类似的帖子:似乎你正在使用Windows,然后你应该在主脚本的开始添加if __name__ == '__main__':(以避免递归地创建子进程):

import B
if __name__ == '__main__':    
obj = B('Test')
obj.processingB()

使用你的代码,我终于得到:

Doing some A using Test
Doing some B using Test
Doing some C using Test

相关内容

  • 没有找到相关文章

最新更新