ean*_*son 7 python queue multithreading python-2.7
我正在寻找一个可靠的实现,以允许我逐步使用Queue处理项目列表.
我的想法是,我想使用一定数量的工作人员,这些工作人员将通过20多个数据库密集型任务列表并返回结果.我希望Python从五个第一项开始,一旦完成一项任务就开始于队列中的下一个任务.
这就是我目前没有线程的方式.
for key, v in self.sources.iteritems():
# Do Stuff
Run Code Online (Sandbox Code Playgroud)
我想有一个类似的方法,但可能无需将列表分成五个子组.这样它就会自动获取列表中的下一个项目.目标是确保如果一个数据库正在减慢进程,它将不会对整个应用程序产生负面影响.
您可以自己实现,但Python 3已经提供了一个Executor基于线程管理的解决方案,您可以通过安装backported版本在Python 2.x中使用它.
您的代码可能看起来像
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
future_to_key = {}
for key, value in sources.items():
future_to_idday[executor.submit(do_stuff, value)] = key
for future in concurrent.futures.as_completed(future_to_key):
key = future_to_key[future]
result = future.result()
# process result
Run Code Online (Sandbox Code Playgroud)