如果我在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()