管道
multiprocessing.Pipe([duplex])
返回一对 Connection 对象 (conn1, conn2) , 分别表示管道的两端;如果 duplex 被置为 True (默认值),那么该管道是双向的,否则管道是单向的。
from multiprocessing import Pipe, Process def setData(conn, data): conn.send(data) def printData(conn): print(conn.recv()) if __name__ == "__main__": data = '程序之间' # 创建管道返回管道的两端 conn1, conn2 = Pipe() p1 = Process(target=setData, args=(conn1, data,)) p2 = Process(target=printData, args=(conn2,)) p1.start() p2.start() p1.join() p2.join()
队列
multiprocessing.Queue([maxsize])
返回一个共享队列实例。具有如下方法:
- qsize():返回队列的大致长度。
- empty():如果队列是空的,返回 True,反之返回 False。
- full():如果队列是满的,返回 True,反之返回 False。
- put(obj[, block[, timeout]]):将 obj 放入队列。
- put_nowait(obj):相当于 put(obj, False)。
- get([block[, timeout]]):从队列中取出并返回对象。
- get_nowait():相当于 get(False)。
- close():指示当前进程将不会再往队列中放入对象。
- join_thread():等待后台线程。
- cancel_join_thread():防止进程退出时自动等待后台线程退出。
from multiprocessing import Queue, Process def setData(q, data): q.put(data) def printData(q): print(q.get()) if __name__ == "__main__": data = '程序之间' q = Queue() p1 = Process(target=setData, args=(q, data,)) p2 = Process(target=printData, args=(q,)) p1.start() p2.start() p1.join() p2.join()