from multiprocessing import Queue, Process
import threading,os
def con(process_queue):
print("打印子进程id:",os.getpid())
process_queue.put("添加的数据")
if __name__ == "__main__":
# 主进程创建一个队列
print("主进程id", os.getpid())
q = Queue()
# 启动一个子进程对队列进行更改,需要将对象在初始化的时候传过去
p = Process(target=con, args=(q,))
p.start()
# 主进程从队列中获取数据
print(q.get())
p.join()# 等待子进程介绍,再退出程序
from multiprocessing import Process, Pipe
def pip_child(conn):
conn.send("这个从子进程发出1")
conn.send("这个从子进程发出2")
print(conn.recv())
conn.close()
if __name__ == "__main__":
# 建立进程间的通讯管道
parent_conn, child__conn = Pipe()
# 创建子进程的时候传递一端给子进程,执行子进程
p = Process(target=pip_child, args=(child__conn,))
p.start()
input("子进程已发送数据,按键继续")
# 父进程开始接受数据
# while len(parent_conn.recv())>=0:
# print(parent_conn.recv())
print(parent_conn.recv())
print(parent_conn.recv())
parent_conn.send("from main process.")
from multiprocessing import Process, Manager
import os
def change(d, l):
"""
:param d:需要更改的字段
:param l: 进程列表
:return:
"""
# 进程id
d[os.getpid()] = os.getpid()
l.append(os.getpid())
print(d,l)
if __name__ == "__main__":
with Manager() as manager:
# 主进程生成一个可以在多个进程间修改的字典
d = manager.dict()
# 主进程生成一个列表,可以在多个进程间进行修改
l = manager.list(range(5))
# 存储所有的进程
p_list = []
for i in range(10):
p = Process(target=change, args=(d, l))
p.start()
p_list.append(p)
#等待执行结果
for i in p_list:
i.join()
print("----------打印最后结果----------")
print(d)
print(l)