無限ループで多くの urllib リクエストを実行するプログラムがあるため、プログラムが非常に遅くなるため、それらをスレッドとして配置してみました。Urllib はソケット モジュールの奥深くで cpython を使用するため、作成中のスレッドは単純に加算されて何もしません。これは、python の GIL が 2 つの cpython コマンドが異なるスレッドで同時に実行されるのを防ぐためです。Python 2.5 で Windows XP を実行しているため、マルチプロセス モジュールを使用できません。サブプロセス モジュールを調べて、何らかの方法でサブプロセスで Python コードを実行する方法があるかどうかを確認しようとしましたが、何もありませんでした。マルチプロセスのような関数を介してPythonサブプロセスを作成できる方法があれば、それは素晴らしいことです。
また、外部モジュールをダウンロードしたくはありませんが、喜んでダウンロードします。
編集:これは、現在のプログラムのコードのサンプルです。
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 オブジェクトを使用しても使用しなくても、同じか遅いことがわかりました。モジュールのような独自のカスタムtimeitを作成しましたが、上記には約0.5〜2秒かかります。これは、私のプログラムの動作にとって恐ろしいことです。