【发布时间】:2016-02-28 15:01:02
【问题描述】:
我一直在做一些阅读,在 Python 2.7 中找不到解决我的问题的最佳实践,它是这样的:
我有一个项目列表,我想遍历所有项目并调用某个函数。这个函数将对这些项目做一些工作并返回一个新项目。 该函数的每个返回值都将附加到一个新的项目列表中。 一切都很好,很简单,直到我尝试使用线程来做到这一点。
我想做同样的工作,但现在每个函数调用都会打开一个新线程(最多 20 个线程),该线程将完成函数的工作并返回所需的信息以附加到列表中。
newList = []
for item in myList:
info = getInfo(item)
newList.append(info)
return newList
根据我的阅读,列表是线程安全的,所以我想也许可以使用队列和线程模块,然后将所有当前项目放入队列中,在传递 newList 并附加到每个线程中的同时完成每个工作...... 有什么想法吗?
【问题讨论】:
-
你可以让你的函数自己做任务。将项目、列表和索引传递给它。然后,该函数可以确定如何处理该项目,一旦做出决定,它就可以将列表设置为具有正确的项目。
标签: python multithreading list python-2.7 thread-safety