python - 这个 python 示例中运行了多少个线程?

标签 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) 线程数因设备而异(取决于处理器、内存等)。由于这段代码没有指定任何数量的线程,程序如何知道并发运行的正确线程数?

最佳答案

线程是在 for 循环中创建的。 for 循环被执行两次,因为 theurls 中有两个元素。这也回答了你的其他两个问题。因此你最终在程序中有两个线程

加上主循环线程

共 3

关于python - 这个 python 示例中运行了多少个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51656853/

相关文章:

python-3.x - 用Python使图形更长

python - 如何将耗时添加到列表中

生产者消费者应用程序上的 Java 多线程查询

Python多线程和HTTP请求

python - Pandas 用 np.nan 替换前几个 0

python - 为什么 __bool__ 内置函数必须在 dask.delayed 对象上引发异常?

python - 以编程方式在 pytest 插件中注册固定装置

python - 如何在 scrapy 爬虫中使用用户名/密码进行身份验证?

python - 同时分配多个实例的属性

java - 异步任务和程序流程遇到问题