在进行多进程自动化测试代码编写时,出现了cannot serialize _io.BufferedReader object错误,是将一个不可序列化的对象传递给对象从而导致的问题。对于多进程的程序而言,每一个进程都有自己独占的内存空间,他们之间是相互独立的。
先看一段我自己写的代码:
m=mmsdb()
conn=m.connect()
cursor=conn.cursor()
security_tuple_all=m.getAll_securityList(cursor)
total=m.getSUM_securityList(cursor)
temp=round(total/p_num)
p_list=[]
for i in range(p_num): #进程之间是不能通信的,即不能有公共对象
begin =0
end =0
if(i!=p_num-1):
begin=tempi
if(begin==0):
begin=0
end=temp(i+1)
if(end==p_num-1):
end=total
print(begin,end)
security_tuple=security_tuple_all[begin:end]
p=multiprocessing.Process(target=writerTable, args=(m,conn,cursor,security_tuple,interfacename_dict,))
p.start()
p_list.append§ #将进程放入list中
红色标记的m,conn,cursor是公共对象,第一个进程可以正常运行,第二个进程启动后就会报TypeError: cannot serialize ‘_io.BufferedReader’ object
就是因为m,conn,cursor已经被第一个进程占用,第二个进程已不能再进行序列化了,故而报这个错。
python多进程之间是不可以通信的。