Regarding memory consumption in python with urllib

2019-05-31 05:54发布

PS: I have a similar question with Requests HTTP library here.

I am using python v2.7 on windows 7 OS. I am using urllib2 module. I have two code snippets. One file is named as myServer.py The server class has 2 methods named as getName(self,code) and getValue(self). The other script named as testServer.py simply calls the methods from the server class to retrieve the values and prints them. The server class basically retrieves the values from a Server in my local network. So, unfortunately I can't provide you the access for testing the code.

Problem: When I execute my testServer.py file, I observed in the task manager that the memory consumption keeps increasing. Why is it increasing and how to avoid it? If I comment out the following line

print serverObj.getName(1234)

in testServer.py then there is no increase in memory consumption.

I am sure that the problem is with the getName(self,code) of the server class. But unfortunately, I couldn't figure out what the problem is.

Code: Please find the code snippets below:

#This is the myServer.py file

import urllib2
import json
import random

class server():
    def __init__(self):
        url1 = 'https://10.0.0.1/'
        username = 'user'
        password = 'passw0rd'
        passwrdmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
        passwrdmgr.add_password(None, url1, username, password)
        authhandler = urllib2.HTTPBasicAuthHandler(passwrdmgr)
        opener = urllib2.build_opener(authhandler)
        urllib2.install_opener(opener)
    def getName(self, code):
        code = str(code)
        url = 'https://10.0.0.1/' + code
        response = urllib2.urlopen(url)
        data = response.read()
        name = str(data).strip()
        return name
    def getValue(self):
        value = random.randrange(0,11)
        return value

The following is the testServer.py snippet

from myServer import server
import time

serverObj = server()
while True:
    time.sleep(1)
    print serverObj.getName(1234)
    print serverObj.getValue()

Thank you for your time!

1条回答
2楼-- · 2019-05-31 06:27

This is question is quite similar to my other question. So I think the answer is also quite similar. The answer can be found here https://stackoverflow.com/a/23172330/2382792

查看更多
登录 后发表回答