繁体   English   中英

线程不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM