【发布时间】:2017-04-25 21:17:19
【问题描述】:
我一直在使用multithreading 来执行此操作,但是它挂了很多。我在考虑multiprocessing,但我不确定这是否更有优势。
我有一系列名字,每个名字都有一个日期范围。我为范围内的每个日期生成一个线程,然后在里面工作。一旦工作完成,它会将结果放入Queue() 以供main 更新GUI。
使用Queue() 来保存所需的 URL 是否比一次启动 350 个线程并等待更好?当我启动那么多线程时,Python 似乎挂起。
【问题讨论】:
-
350 个线程很多。考虑一个进程或线程池。
pool.map_unordered实现了一个返回队列,您可以使用它来提供 gui -
@tdelaney for
pool.map_unordered我们在谈论多处理Pool()吗? -
我们在这里讨论的请求总数是多少?
-
multiprocessing.Pool是多个进程。相同的接口被实现为multiprocessing.pool.ThreadPool的线程池。子进程实现了更好的并行性,但来回传递数据是有代价的。如果处理量大,返回数据比较少,是更好的选择。 -
@tdelaney 如果我要访问这些 url 并下载 20-65MB 的文件,这仍然是最好的方法吗?
标签: python multithreading python-2.7