from multiprocessing import Process, Queue
def f(qq):
print("in child:",qq.qsize())
qq.put(["username:vergil/password:123456"])
if __name__ == '__main__':
q = Queue()
q.put("input:username/password")
p = Process(target=f, args=(q,))
p.start()
p.join()
print("__main__process request:",q.get_nowait())
print("from chird_process return:",q.get_nowait())
manager定义字典、列表来多进程共享编辑:
from multiprocessing import Process, Manager
import os
def f(d, l):
d["username"] = 'vergil'
d['password'] = 123456
d["pid%s" %os.getpid()] = os.getpid()
l.append(range(5))
print("frome chird_process:",l,d)
if __name__ == '__main__':
with Manager() as manager:
d = manager.dict()
l = manager.list()
p_list = []
for i in range(10):
p = Process(target=f, args=(d, l))
p.start()
p_list.append(p)
for res in p_list:
res.join()
print(d)
print(l)
###通过pipe来传参:
from multiprocessing import Process, Pipe
def f(conn):
conn.send(["info:username/password"])
print("",conn.recv())
conn.close()
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
print("main_process get:",parent_conn.recv()) # prints "[42, None, 'hello']"
parent_conn.send(["username:vergil/password:123456"]) # prints "[42, None, 'hello']"
p.join()