python中的线程和多线程示例

时间:2017-06-18 22:33:53

标签: python multithreading

我是python的初学者,无法了解线程。通过使用简单的示例,有人可以在python中解释线程和多线程吗?

-Thanks

1 个答案:

答案 0 :(得分:0)

这是Alex Martelli's answer about multithreading, as linked above

他使用一个简单的程序尝试一些URL然后返回第一个的内容来响应。

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
  

这是一种将线程用作简单优化的情况:每个子线程都在等待URL解析和响应,以便将其内容放在队列中;每个线程都是一个守护进程(如果主线程结束,则不会保持进程 - 这种情况比较常见);主线程启动所有子线程,进入队列等待其中一个进行了put,然后发出结果并终止(这会删除任何可能仍在运行的子线程,因为它们是守护线程)。

     

在Python中正确使用线程总是与I / O操作相关联(因为CPython无论如何都不使用多个内核来运行CPU绑定任务,因此线程的唯一原因并不是阻止进程。 ; sa等待一些I / O)。顺便说一下,队列几乎总是将工作分配到线程和/或收集工作结果的最佳方式,并且它们本质上是线程安全的,因此它们可以避免担心锁,条件,事件,信号量和其他线程间协调/通信概念。