如下代码:
# -*- coding: utf-8 -*-
from multiprocessing import Pool,Pipe,Process,Manager
def proc1(pipeA,i):
print "send:"+str(i)
pipeA.send(i)
time.sleep(2)
def proc2(pipeB,flagl):
try:
while True:#flagl[0]==1:
if pipeB.poll():
print "proc2 rev:"+str(pipeB.recv())
elif flagl[0]==0:
raise Exception
time.sleep(1)
except:
pass
finally:
print 'WTF'
pipeB.send('66666')
if __name__ == "__main__":
try:
flagl = Manager().list([1,])
pipeA,pipeB = Pipe()
pool = Pool(processes=3)
p1 = Process(target=proc1, args=(pipeA,8))
p2 = Process(target=proc2, args=(pipeB,flagl))
p1.start()
p2.start()
#for i in xrange(4):
# pool.apply(proc1, args=(pipeA,i))
pool.close()
pool.join()
flagl[0] = 0
p1.join()
print 'p1end!'
p2.join()
print pipeA.recv()
except Exception,e:
print e
finally:
print 'end!'
问题:注释掉的进程池添加部分为什么会出现问题
# -*- coding: utf-8 -*-
from multiprocessing import Pool,Pipe,Process,Manager
def proc1(pipeA,i):
print "send:"+str(i)
pipeA.send(i)
time.sleep(2)
def proc2(pipeB,flagl):
try:
while True:#flagl[0]==1:
if pipeB.poll():
print "proc2 rev:"+str(pipeB.recv())
elif flagl[0]==0:
raise Exception
time.sleep(1)
except:
pass
finally:
print 'WTF'
pipeB.send('66666')
if __name__ == "__main__":
try:
flagl = Manager().list([1,])
pipeA,pipeB = Pipe()
pool = Pool(processes=3)
p1 = Process(target=proc1, args=(pipeA,8))
p2 = Process(target=proc2, args=(pipeB,flagl))
p1.start()
p2.start()
#for i in xrange(4):
# pool.apply(proc1, args=(pipeA,i))
pool.close()
pool.join()
flagl[0] = 0
p1.join()
print 'p1end!'
p2.join()
print pipeA.recv()
except Exception,e:
print e
finally:
print 'end!'
问题:注释掉的进程池添加部分为什么会出现问题
