小编Mar*_*rov的帖子

Python 多处理为每个进程创建相同的对象实例

我写了一个简单的例子来说明我到底在想什么。可能有一些非常简单的解释我只是错过了。

import time
import multiprocessing as mp
import os


class SomeOtherClass:
    def __init__(self):
        self.a = 'b'


class SomeProcessor(mp.Process):
    def __init__(self, queue):
        super().__init__()
        self.queue = queue

    def run(self):
        soc = SomeOtherClass()
        print("PID: ", os.getpid())
        print(soc)

if __name__ == "__main__":
    queue = mp.Queue()

    for n in range(10):
        queue.put(n)

    processes = []

    for proc in range(mp.cpu_count()):
        p = SomeProcessor(queue)
        p.start()
        processes.append(p)

    for p in processes:
        p.join()
Run Code Online (Sandbox Code Playgroud)

结果是:

PID: 11853
<__main__.SomeOtherClass object at 0x7fa637d3f588>
PID: 11854
<__main__.SomeOtherClass object at 0x7fa637d3f588>
PID: 11855
<__main__.SomeOtherClass object …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing python-multiprocessing python-object

5
推荐指数
1
解决办法
1644
查看次数