请原谅无用的变量名和不必要的臃肿代码,但我只是迅速将它们拼凑在一起,还没有时间优化或整理。
我编写了这个程序,通过解析 URL 的消息日志,转储我和朋友使用网络摄像头照片共享服务 (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()