我正在尝试使用python中的线程从yahoo finance获取符号列表的最后一个值。我阅读线程纪录片,但我不明白这个概念
#!/usr/bin/python
from threading import Thread
import urllib
import re
def th(ur):
base = 'https://finance.yahoo.com/q?s='+ur
htmlfile = urllib.urlopen(base).read()
regex = '<span id="yfs_l84_[^.]*">(.+?)</span>'
result = re.findall(regex,htmlfile)
print result[0]
symbollist = open("symbollist.txt").read().splitlines()
threadlist = []
for u in symbollist:
t = Thread(target=th,args=(u,))
t.start()
threadlist.append(t)
for b in threadlist:
b.join()
答案 0 :(得分:1)
您的函数中的所有代码都被称为&#34; th&#34;需要线程安全。
如果其中任何一个不是,那么您需要锁定这些部分以停止&#34;线程化&#34;问题,例如竞争条件。
答案 1 :(得分:1)
为什么3000个符号使用3000个线程?
如果您希望通过使用多线程对多核计算机的性能产生良好影响,我认为您应该使用大约8或10个线程。每个线程都执行numberOfJob / numberOfThread作业。
The right way to limit maximum number of threads running at once?
Is the max thread limit actually a non-relevant issue for Python / Linux?