多进程 多进程queue
多进程
import multiprocessing import threading import time def thread_run(): print(threading.get_ident()) def run(name): time.sleep(2) print('hello', name) t = threading.Thread(target=thread_run(),)#启动一个线程 t.start() if __name__ == '__main__': for i in range(10): p = multiprocessing.Process(target=run, args=('bob %s'%i,))#启动10个进程 p.start() #p.join()
多进程queue
之前学习过一个queue,线程queue,为了在线程之间实现数据共享,但是出了线程,在进程之间数据就不能通过这个queue传递
现在了解一下多进程queue
import multiprocessing def func(q): q.put([42,None,"hello"])#子进程在进程queue放了数据 if __name__ == '__main__': q = multiprocessing.Queue()#生成一个进程queue,q p = multiprocessing.Process(target=func,args=(q,))#创建一个进程p,把进程queue作为参数传递给进程p p.start()#启动进程 print(q.get())#在父进程中显示子进程的数据
另一进程间数据传递的例子
import multiprocessing def func(q): q.put([42,None,"hello"])#子进程p1在进程queue放了第一组数据 q.put([43,None,"hello"])#子进程p1在进程queue放了第二组数据 def func2(q): print(q.get())#取出q中的数据 if __name__ == '__main__': q = multiprocessing.Queue()#生成一个进程queue,q p1 = multiprocessing.Process(target=func,args=(q,))#创建一个进程p1,执行func函数,并把进程queue作为参数传递给进程p p2 = multiprocessing.Process(target=func2,args=(q,))#创建一个进程p2,执行func2函数,并把进程queue作为参数传递给进程p p1.start()#启动进程p1 p2.start()#启动进程p2
print('--->',q.get())#在父进程中显示子进程的数据
例子中主进程和p2子进程都可以从q中获得,p1子进程存入的数据
D:\7_Python\Python37\python.exe D:/7_Python/S14/其他/aaaa.py ---> [42, None, 'hello'] [43, None, 'hello']