我被困在使用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