这个python示例中正在运行多少个线程?

时间:2018-08-02 15:05:37

标签: python python-3.x multithreading python-multithreading

我想学习如何使用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)线程数因设备而异(取决于处理器,内存等)。由于此代码未指定任何数量的线程,因此程序如何知道要同时运行的正确线程数?

1 个答案:

答案 0 :(得分:1)

正在for循环中创建线程。因为theurls中有两个元素,所以for循环执行了两次。这也回答了您另外两个问题。因此,您最终在程序中拥有两个线程

加上主循环线程

总计3