关于类的Python多进程池或进程

时间:2018-11-26 14:56:36

标签: python-3.x python-multiprocessing

如果我在python3中使用pool.map或map.starmap,则会出错: multiprocessing.pool.MaybeEncodingError:发送结果错误:

,如果我使用multiprocessing.Process,则无法从q获取结果。 例如:

import time
import multiprocessing
from multiprocessing import Process,freeze_support,Manager,Queue,Pool
q=Queue()
class A(object):
    def __init__(self,varam):
        self.varam = varam

class class_one(object):
    def __init__(self):
        self.var = {}
        self.get()
    def get_result(self, varam):
        q.put(A(varam))
    def get(self):
        freeze_support()
        var = {}
        for i in [6,7,8,9]:
            p = Process(target=self.get_result, args=(i, ))
            process_list.append(p)
            p.start()

if __name__ == '__main__':
    freeze_support()
    process_num =2
    process_list = []

    g = class_one()
    for j in process_list:
        j.join()
    print(q.qsize())
    if q.empty():
        print("error")
    while (not q.empty()):
        print(q.get().varam)
        g.var[q.get().varam]=q.get()

0 个答案:

没有答案