python reader循环_python中的多处理(从for循环到多处理for循环)

我有一个有效的脚本。它有一个for循环,我想通过合并多处理来提高速度。在

不进行多处理的代码如下:Symbol= Symbol[0:] #slicing to coose which stocks to look at

################################for loop

for item in Symbol:

print item

try:

serious=web.DataReader([item], 'yahoo', start, end)['Adj Close']

serious2=serious.loc[:, item].tolist() #extract the column of 'Adj Close'

tickerlistori.append(item)

valuemax = max(serious2)

indexmax = serious2.index(max(serious2))

valuemin = min(serious2)

indexmin = serious2.index(min(serious2))

pricecurrent = serious2[-1]

if valuemax>30 and valuemin<2 and pricecurrent<2.5:

tickerlist.append(item)

maxpricelist.append(valuemax)

minpricelist.append(valuemin)

except RemoteDataError:

pass

print tickerlist

下面的第二个代码块是“并行处理”

^{pr2}$

第一个可以正常工作,但是第二个,尽管代码没有错误地运行,但是输入pool.map(search1, Symbol)的符号似乎不正确。在

提前谢谢。在

(符号应该是股票行情表)

---------------在做出改变后,特德莱尼建议import matplotlib.pyplot as plt

import csv

import pandas as pd

import datetime

import pandas.io.data as web

from pandas.io.data import DataReader, SymbolWarning, RemoteDataError

from filesortfunct import filesort

from scipy import stats

from scipy.stats.stats import pearsonr

import numpy as np

import math

from multiprocessing import Pool

import warnings

warnings.filterwarnings("ignore")

#decide the two dates between which to look at stock prices

start = datetime.datetime.strptime('2/10/2015', '%m/%d/%Y')

end = datetime.datetime.strptime('2/25/2016', '%m/%d/%Y')

#intended to collect indeces and min/max prices

#global tickerlist, maxpricelist, minpricelist, tickerlistori

tickerlistori=[] #list of stocks available from google finance

tickerlist=[]

maxpricelist = []

minpricelist =[]

datanamelist= ['NYSE.csv']#,'NASDAQ.csv','AMEX.csv']

for each in datanamelist:

#print each #print out which stock exchange is being looked at

dataname= each #csv file from which to extract stock tickers

new = 'new'

df = pd.read_csv(dataname, sep=',')

df = df[['Symbol']]

df.to_csv(new+dataname, sep=',', index=False)

x=open(new+dataname,'rb') #convert it into a form more managable

f = csv.reader(x) # csv is binary

Symbol = zip(*f)

#print type(Symbol) #list format

Symbol=Symbol[0] #pick out the first column

# Symbol = Symbol[1:len(Symbol)] #remove the first row "symbol" header

Symbol = Symbol[3210:len(Symbol)]

Symbol= Symbol[0:] #slicing to coose which stocks to look at

#print Symbol

def search1(item):

print item #trying to see why the tickers are messed up

try:

serious=web.DataReader([item], 'yahoo', start, end)['Adj Close']

serious2=serious.loc[:, item].tolist() #extract the column of 'Adj Close'

valuemax = max(serious2)

indexmax = serious2.index(max(serious2))

valuemin = min(serious2)

indexmin = serious2.index(min(serious2))

pricecurrent = serious2[-1]

if valuemax>30 and valuemin<2 and pricecurrent<2.5:

return item, valuemax, valuemin

except RemoteDataError:

pass

pool = Pool(processes=4)

pool.start()

for result in pool.map(search1, Symbol):

if result:

tickerlist.append(result[0])

maxpricelist.append(result[1])

minpricelist.append(result[2])

print tickerlist

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值