- 创建进程: 首先要导入
multiprocessing
中的Process
- 创建一个
Process
对象, 创建Process
对象时, 可以传递参数
p = Process(target=XXX,args=(tuple,),kwargs={key:value})
target = XXX
指定的任务函数,不用加(),
args=(tuple,)kwargs={key:value}
给任务函数传递的参数
from multiprocessing import Queue, Process
import os,time, random
#写数据进程执行的代码:
def write(q):
for value in ['a','b','c']:
print('put %s to queue...' %value)
q.put(value)
time.sleep(random.random())
#读数据进程执行的代码
def read(q):
while True:
if not q.empty():
value = q.get(True)
print("Get %s from queue."%value)
time.sleep(random.random())
else:
break
if __name__ == '__main__':
#父进程创建Queue,并传给各个子进程
q = Queue()
pw = Process(target=write,args=(q,))
pr = Process(target=read,args=(q,))
#启动子进程pw ,写入:
pw.start()
#等待pw结束
pw.join()
#启动子进程pr,读取:
pr.start()
pr.join()
#pr 进程里是死循环,无法等待其结束,只能强行终止:
print('')
print('所有数据都写入并且读完')
# 执行结果
put a to queue...
put b to queue...
put c to queue...
Get a from queue.
Get b from queue.
Get c from queue.
所有数据都写入并且读完