役に立たない変数名と不必要に肥大化したコードを失礼しますが、私はこれをすばやくまとめただけで、まだ最適化または整理する時間がありませんでした。
このプログラムを作成して、友人と送信したすべての画像を、URLのメッセージログを解析してWebカメラ写真共有サービス(321cheese.com)を使用して相互にダンプしました。問題は、私のマルチスレッドが機能していないように見えることです。
コードの下部に、コメントアウトされた非マルチスレッドのダウンロード方法が表示されます。これにより、常に正しい結果(この場合は121枚の写真)が生成されます。しかし、このアクションを新しいスレッドに送信しようとすると、プログラムは112枚の写真、90枚、115枚の写真などをダウンロードすることがありますが、正しい結果が得られないことがあります。
なぜこれが問題を引き起こすのでしょうか?同時スレッドの数(およびその方法)を制限する必要がありますか?
import urllib
import thread
def getName(input):
l = input.split(".com/")
m = l[1]
return m
def parseMessages():
theFile = open('messages.html', 'r')
theLines = theFile.readlines()
theFile.close()
theNewFile = open('new321.txt','w')
for z in theLines:
if "321cheese" in z:
theNewFile.write(z)
theNewFile.close()
def downloadImage(inputURL):
urllib.urlretrieve (inputURL, "./grabNew/" + d)
parseMessages()
f = open('new321.txt', 'r')
lines = f.readlines()
f.close()
g = open('output.txt', 'w')
for x in lines:
a = x.split("<a href=\"")
b = a[1].split("\"")
c = b[0]
if ".png" in c:
d = getName(c)
g.write(c+"\n")
thread.start_new_thread( downloadImage, (c,) )
##downloadImage(c)
g.close()