У меня есть программа, которая запускает множество запросов urllib в INFINITE LOOP, что делает мою программу очень медленной, поэтому я попытался поместить их в виде потоков. Urllib использует cpython глубоко в модуле сокета, поэтому создаваемые потоки просто складываются и ничего не делают, потому что python GIL предотвращает одновременное выполнение двух команд cpython в неустойчивых потоках. Я запускаю Windows XP с Python 2.5, поэтому я не могу использовать многопроцессорный модуль. Я попробовал посмотреть модуль подпроцесса, чтобы посмотреть, есть ли способ выполнить код python в подпроцессе, но ничего. Если у кого-то есть способ, чтобы я мог создать подпроцесс python через функцию, как в многопроцессе, это было бы здорово.
Кроме того, я бы предпочел не загружать внешний модуль, но я готов.
EDIT: Вот пример кода в моей текущей программе.
url = "http://example.com/upload_image.php?username=Test&password=test"
url = urllib.urlopen(url, data=urllib.urlencode({"Image": raw_image_data})).read()
if url.strip().replace("\n", "") != "":
print url
Я сделал тест, и оказалось, что urllib2 urlopen с объектом Request и без него все еще медленнее или медленнее. Я создал собственный пользовательский модуль времени, подобный модулю, и выше занимает около 0,5-2 секунд, что ужасно для моей программы.