Python多线程冻结(?)随机
我正在写一个脚本,应该可以从大量的网站上获取一些图片。第一次使用多线程时,认为这里需要多线程,所以获得一个好的运行时。所以问题是:脚本运行了,但是在一系列看似随机的网站通过之后,它就不再继续了。它并没有完全冻结,时间只是从感觉上的1/100秒上升。几分钟左右,有时很长,我只是关闭它。此外,有些网站似乎并不是特别负责,有时它会收到970条,只有200条。以下是守则的相关部分:Python多线程冻结(?)随机,python,multithreading,freeze,Python,Multithreading,Freeze,我正在写一个脚本,应该可以从大量的网站上获取一些图片。第一次使用多线程时,认为这里需要多线程,所以获得一个好的运行时。所以问题是:脚本运行了,但是在一系列看似随机的网站通过之后,它就不再继续了。它并没有完全冻结,时间只是从感觉上的1/100秒上升。几分钟左右,有时很长,我只是关闭它。此外,有些网站似乎并不是特别负责,有时它会收到970条,只有200条。以下是守则的相关部分: concurrent = 200 q = Queue(concurrent * 2) def main(listPath
concurrent = 200
q = Queue(concurrent * 2)
def main(listPath, usagePath, idListPath):
[...]
for i in range(concurrent):
t = Thread(target=work)
t.daemon = True
t.start()
try:
for code in usedIDs:
q.put(code)
q.join()
except KeyboardInterrupt:
sys.exit(1)
def work():
while True:
code = q.get()
picture = getPicture(code)
if picture is None:
pass # todo: find other source or default
if not code in usage.keys():
usage[code] = list()
usage[code].append(picture)
q.task_done()
希望我得到了所有重要的代码。提前谢谢 对于这种任务,我更喜欢使用from(使用线程),因为它更容易使用。您可能遇到内存泄漏。当速度减慢时,您是否查看过脚本的任何配置文件,甚至只查看过系统资源?您似乎将图片存储在内存中。如果程序中使用的内存太多(超过RAM的容量),则操作系统必须使用磁盘来提供所需的空间,这非常缓慢。对于此类任务,我更喜欢使用from(使用线程),因为它更易于使用。您可能遇到内存泄漏。当速度减慢时,您是否查看过脚本的任何配置文件,甚至只查看过系统资源?您似乎将图片存储在内存中。如果你在程序中使用了太多的内存(超过了你的RAM所能容纳的),那么你的操作系统必须使用磁盘来提供所需的空间,这是非常缓慢的。