我从一个python代码运行多个进程:
代码段:while 1:
if sqsObject.msgCount() > 0:
ReadyMsg = sqsObject.readM2Q()
if ReadyMsg == 0:
continue
fileName = ReadyMsg['fileName']
dirName = ReadyMsg['dirName']
uuid = ReadyMsg['uid']
guid = ReadyMsg['guid']
callback = ReadyMsg['callbackurl']
# print ("Trigger Algorithm Process")
if(countProcess < maxProcess):
try:
retValue = Process(target=dosomething, args=(dirName, uuid,guid,callback))
processArray.append(retValue)
retValue.start()
countProcess = countProcess + 1
except:
print "Cannot Run Process"
else:
for i in range(len(processArray)):
if (processArray[i].is_alive() == True):
continue
else:
try:
#print 'Restart Process'
processArray[i] = Process(target=dosomething, args=(dirName,uuid,guid,callback))
processArray[i].start()
except:
print "Cannot Run Process"
else: # No more request to service
for i in range(len(processArray)):
if (processArray[i].is_alive() == True):
processRunning = 1
break
else:
continue
if processRunning == 0:
countProcess = 0
else:
processRunning = 0
在这里,我从队列中读取消息并创建一个进程来对该消息运行算法。我把maxProcess设为上限。因此,在到达maxproces之后,我希望通过检查is_alive()来重用没有活动的processArray插槽。在
对于较小数量的进程来说,这个进程运行得很好,但是对于大量的消息(比如100条),内存消耗会急剧增加。我想我是因为重复使用进程槽而泄漏的。在
不确定过程中什么是错的。在
提前感谢您发现错误或明智的建议。在