TypeError: cannot serialize '_io.BufferedReader' object 問題記錄


在進行多進程自動化測試代碼編寫時,出現了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=temp*i
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(p) #將進程放入list中

紅色標記的m,conn,cursor是公共對象,第一個進程可以正常運行,第二個進程啟動后就會報TypeError: cannot serialize '_io.BufferedReader' object
就是因為m,conn,cursor已經被第一個進程占用,第二個進程已不能再進行序列化了,故而報這個錯。
python多進程之間是不可以通信的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。