小编Amu*_*zan的帖子

在多处理中使用共享列表的正确方法是什么

我已经在多处理的帮助下在Python(版本3.7)中实现了SharedListManager, Lock。我已将其用作使用多处理Process函数调用创建的进程之间的共享对象。共享列表用于存储共享每个进程所生成的值/对象。

使用Python 和的SharedList的实现ManagerLockmultiprocessing

class SharedList(object):
    def __init__(self, limit):
        self.manager = Manager()
        self.results = self.manager.list([])
        self.lock = Lock()
        self.limit = limit

    def append(self, new_value):
        with self.lock:
            if len(self.results) == self.limit:
                return False
            self.results.append(new_value)
            return True

    def list(self):
        with self.lock:
            return list(self.results).copy()
Run Code Online (Sandbox Code Playgroud)

使用创建的SharedList存储使用创建的多个进程的值multiprocessing

results = SharedList(limit)
num_processes = min(process_count, limit)
processes = []
for i in range(num_processes):
   new_process = Process(target=child_function, args=(results))
   processes.append(new_process)
   new_process.start()

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

python multiprocessing python-3.7

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

标签 统计

multiprocessing ×1

python ×1

python-3.7 ×1