我想学习如何使用python在多线程中运行函数。换句话说,我要发送给函数的参数列表很长,可能需要一些时间才能完成。我希望我的程序循环遍历参数并并行调用函数(无需等到函数从第一个参数开始完成)。
我从here找到了以下示例代码:
import Queue
import threading
import urllib2
# called by each thread
def get_url(q, url):
q.put(urllib2.urlopen(url).read())
theurls = ["http://google.com", "http://yahoo.com"]
q = Queue.Queue()
for u in theurls:
t = threading.Thread(target=get_url, args = (q,u))
t.daemon = True
t.start()
s = q.get()
print s
我的问题是:
1)我通常知道我必须指定希望程序并行运行的多个线程。上面的代码中没有特定数量的线程。
2)线程数因设备而异(取决于处理器,内存等)。由于此代码未指定任何数量的线程,因此程序如何知道要同时运行的正确线程数?
答案 0 :(得分:1)
正在for循环中创建线程。因为theurls
中有两个元素,所以for循环执行了两次。这也回答了您另外两个问题。因此,您最终在程序中拥有两个线程
加上主循环线程
总计3