1. 程式人生 > >python 多線程之Queue

python 多線程之Queue

star queue put 也不能 col nbsp 不能 sock span

#進程之間的通信
# 1.Queue
#跟線程裏的queue類似但是不同
from multiprocessing import Process,Queue
import os

def f(q, n):
    q.put([11, n, None])
    print(subpro,id(q))
if __name__==__main__:
    q=Queue()
    print(mainpro,id(q))
    lst=[]
    for i in range(3):
        p=Process(target=f,args=(q,i))  #必須把q傳進去,因為不同進程間內存是不共享的
lst.append(p) p.start() print(q.get()) print(q.get()) print(q.get()) for i in lst: i.join() # 主進程和其他子進程q(隊列)的內存地址是不同的,說明並不是相同的q,python內部進行了一些操作, # 可能是進程之間在傳遞隊列時,進行了pickle操作。
# 2.Pipes
from multiprocessing import Process,Pipe
def f(conn):
    conn.send([1,aaa
]) conn.close() if __name__==__main__: # 返回父進程連接和子進程連接 parent_conn,child_conn=Pipe() p=Process(target=f,args=(child_conn,)) #參數必須加()別忘了,還有,也不能忘 p.start() print(parent_conn.recv()) #跟socket不同的是recv()不能加數據大小參數, # 傳輸數據不一定是bytes p.join()

python 多線程之Queue