【问题标题】:python multiprocessing is not giving outputpython多处理没有给出输出
【发布时间】:2022-01-03 01:31:45
【问题描述】:

我刚刚了解了 python 多处理,并尝试通过以下方式应用它:

这里这个类 A 将运行继承了 multiprocessing.Process 的类 B

import multiprocessing as mp

class A:
    def __init__(self, num_workers=mp.cpu_count()):
        self.num_workers = num_workers
        self.x = 5
    
    def process(self):
        workers = []
        for i in range(self.num_workers):
            workers.append(B(self.x))
        for worker in workers:
            worker.start()
        for worker in workers:
            worker.join()

class B(mp.Process):
    def __init__(self, val):
        mp.Process.__init__(self)
        self.val = val
        
    def square(self):
        print(self.val * self.val)
    
    def run(self):
        self.square()

最终以这种方式调用类来运行square函数:

a = A()
a.process()

但我没有得到任何输出。

请注意,这是另一个代码的虚拟微版本,由于某些问题,我正在尝试将多线程转换为多处理。

【问题讨论】:

    标签: python multiprocessing


    【解决方案1】:

    这样称呼你的课程

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

    阅读Safe importing of main module了解更多信息

    【讨论】:

    • 无输出,问题出在 def 类内部,但不确定是什么问题。
    • 当我使用 if __name__ == ‘__main__’: 运行时,您提供的示例对我有用
    • 是的,问题出在 Jupyter 笔记本上。我在 colab 上运行,它工作正常。
    猜你喜欢
    • 2021-05-13
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2013-03-30
    相关资源
    最近更新 更多