python3 进程池中使用队列Queue
本站寻求有缘人接手,详细了解请联系站长QQ1493399855
主要是这两行代码:
m = multiprocessing.Manager()
self.queue = m.Queue()
描述如下:
Manager()返回的管理器对象控制一个服务器进程,该进程保存Python对象并允许其他进程使用代理操作它们。
Manager()返回的管理器将支持类型列表,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Barrier,Queue,Value和Array。
完整代码如下:
import multiprocessing
import timeclass Test:def __init__(self):self.pool = multiprocessing.Pool()# self.queue = multiprocessing.Queue()m = multiprocessing.Manager()self.queue = m.Queue()def subprocess(self):for i in range(10):print("Running")time.sleep(1)print("Subprocess Completed")def start(self):self.pool.apply_async(func=self.subprocess)print("Subprocess has been started")self.pool.close()self.pool.join()def __getstate__(self):self_dict = self.__dict__.copy()del self_dict['pool']return self_dictdef __setstate__(self, state):self.__dict__.update(state)if __name__ == '__main__':test = Test()test.start()