python 进程 进程池 进程间通信实现解析
1.python中创建进程的两种方式:
frommultiprocessingimportProcess importtime deftest_(): print'-----test-----' if__name__=='__main__': p=Process(target=test_) p.start() whileTrue: print'--main--' '''1.通过process类创建一个进程对象,然后start即可开启进程,test test_函数是进程实现的功能''' frommultiprocessingimportProcess importtime classMyNewProcess(Process): defrun(self): print'------run-------' if__name__=='__main__': p=MyNewProcess() p.start() print'---main-----' '''2.通过类似继承process子类中必须有run方法里边实现进程功能 创建对象之后调用start'''
2.进程池
frommultiprocessingimportPool fromtimeimportsleep importos deffunc(num): foriinrange(3): print'%s%s'%(os.getpid(),num)# sleep(2) defmain(): pool=Pool(3) foriinrange(3,6): res=pool.apply_async(func,(i,)) pool.close() pool.join() if__name__=='__main__': main()
3.进程间通信
'''python进程间通信Queue''' '''1.Queue使用方法 1.Queue.qsize():返回当前队列包含的消息数量 2.Queue.empty():如果队列为空返回True反之False 3.Queue.full():如果队列满了返回True反之False 4.Queue.get():获取队列中一条消息然后将其从队列中移除可传参数超市时长 Queue.get_nowait():相当于Queue.get(False)取不到值触发异常 Queue.put():将一个值添加到数列可传参数超时时长 Queue.put_nowait():相当于Queue.get(False)当队列满时报错 ''' frommultiprocessingimportProcess,Queue importtime q=Queue()#创建队列 foriinrange(10): q.put(i) deftest_a(): try: whileTrue: num=q.get_nowait() print'我是进程a取出数字为:%s'%num time.sleep(1) exceptException,e: printe deftest_b(): try: whileTrue: num=q.get_nowait() print'我是进程b取出数字是:%s'%num time.sleep(1) exceptException,e: printe if__name__=='__main__': p1=Process(target=test_a) p2=Process(target=test_b) p1.start() p2.start()
至此简单得使用已经结束
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。