我建立了一个通过多线程启动XX次的搜刮器(worker)(通过Jupyter Notebook, python 2.7, anaconda)。 脚本的格式如下,如python.org上所述。
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done
当我按原样运行该脚本时,没有任何问题。 脚本完成后,内存被释放。
但是,我想把上述脚本运行20次(批处理)。
所以我把上述脚本变成了一个函数,并使用下面的代码运行这个函数。
def multithreaded_script():
my script #code from above
x = 0
while x<20:
x +=1
multithredaded_script()
每一次迭代都会增加内存,最终系统开始将其写入磁盘。
是否有办法在每次运行后清除内存?
I tried:
setting all the variables to None
setting sleep(30)
at end of each iteration (in case it takes time for ram to release)
但似乎没有任何帮助。
有什么办法可以让我在While语句中每次运行后清除内存?
如果没有,有没有更好的方法来执行我的脚本XX次,而又不占用内存?
预先感谢你。