2013-01-01 29 views
0

我在Python中有一个线程问题。内存一直在起床(pythonw.exe)..它以+ - 20.000 kB开始,但一直保持上升,直到程序完成。任何人都知道如何解决此问题?在使用Python进行线程化过程中,内存一直在起床

class Threads(threading.Thread): 
    def run(self): 
     try: 
      HTML = urllib2.urlopen(//URL//).read() 
     except urllib2.HTTPError: pass 
     except: pass 

def __Scan__(): 
    Count = 0 
    while Count <10000: 
     Count = Count + 1 
     try: 
      Thread = Threads() 
      Thread.name = Count 
      Thread.start() 
     except: 
      Count = Count - 1 

每个线程将打开一个URL,然后我将线程的编号存储在列表中。但我不认为这是记忆力上升的原因吗?任何人都可以帮忙

THX

+0

你在想什么?更好地看看Python的多处理模块 –

+0

而且你正在开始大量的新线程而无需处理它们的正确终结点 –

回答

1

内存中的增加是由于为每个新创建的线程堆栈空间的可能。 Python中的线程(以及大多数其他语言)都有一定的资源开销。每次创建一个时,都会为其分配一点内存。

+0

另外,他正在创建10000个线程,如果没有增加内存使用量,这将会怎样? – favoretti

+0

我认为,在创建新线程的同时,旧的线程也会完成。所以我认为记忆应该保持在最接近同一水平的状态。 – Coryza

+0

您需要在每个线程上调用'join'来获取要回收的资源。 – jknupp

相关问题