我是python的初学者,无法了解线程。通过使用简单的示例,有人可以在python中解释线程和多线程吗?
-Thanks
答案 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)。顺便说一下,队列几乎总是将工作分配到线程和/或收集工作结果的最佳方式,并且它们本质上是线程安全的,因此它们可以避免担心锁,条件,事件,信号量和其他线程间协调/通信概念。