[英]Threads not working
我正在尝试以下代码来学习python中的线程。
import urllib.request
import re
import threading
from sys import argv, exit
if len(argv[1:])==0:
exit("You haven't entered any arguments. Try again.")
else:
comps=argv[1:]
def extr(comp):
url = 'http://finance.yahoo.com/q?s='+comp
req = urllib.request.Request(url)
resp = urllib.request.urlopen(req)
respData = resp.read()
print (re.findall(r'<span id="yfs_l84_[^.]*">(.*?)</span>',str(respData)))
for x in comps:
t = threading.Thread(extr(x))
t.daemon = True
t.start()
我得到正确的结果,但是却是一次又一次而不是一次。 我想念什么吗?
t = threading.Thread(extr(x))
是问题。 您正在调用extr(x)
,并将其结果传递给Thread构造函数。 尝试Thread(target=extr, args=(x,))
。
然后,您需要使用https://docs.python.org/2/library/queue.html之类的内容,以允许线程在终止之前将结果数据传递回主线程。 您将在主线程中创建队列,并将其作为参数传递到每个子线程中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.