(python)使用线程获取股票市场的最后价值

时间:2015-07-08 20:20:58

标签: python python-multithreading

我正在尝试使用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()
我有一个包含3000个符号的符号列表 我不知道我应该使用多少线程或者我应该在哪里锁定线程

2 个答案:

答案 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?

How many threads is too many?