python 中的多处理或多线程下载文件
Multiprocessing or Multi threading in python to download files
我有一个 csv 文件,其中包含我希望从提供程序中提取的符号列表(大约 6000 个)。下载整个符号列表并将其保存为 csv 需要将近 3 个小时。下载每个符号大约需要 3-4 秒。
我想知道,是否可以/更快地使用多处理/超线程来加快此过程?
应用多进程的正确方法是什么
或多线程来加快进程?
def f():
for ticker in tickers:
df = get_eod_data(ticker, ex,api_key='xxxxxxxxxxxxxxxxxxx')
df.columns = ['Open','High','Low','Close','Adj close','Volume']
df.to_csv('Path\to\file\{}.csv'.format(ticker))
p = Pool(20)
p.map(f)
谢谢!!
经过一些研究,我认为这是最好的方法:
x = ['1','2','3','4','5','6', ..... '3000']
def f(x):
df = get_eod_data(ticker, ex,api_key='xxxxxxxxxxxxxxxxxxx')
df.columns = ['Open','High','Low','Close','Adj close','Volume']
df.to_csv('Path\to\file\{}.csv'.format(ticker))
def mp_handler_1():
p1 = multiprocessing.Pool(10)
p1.map(f, x)
if __name__ == '__main__':
mp_handler_1()
下载所有符号原来需要 3 - 4 个小时,使用 multiprocessing.Pool 需要 35 - 40 分钟!!它创建了 10 python 个进程并并行处理函数,没有数据丢失或损坏。唯一的缺点是,如果这需要比可用内存更多的内存,那么您将得到 MemoryError。
我有一个 csv 文件,其中包含我希望从提供程序中提取的符号列表(大约 6000 个)。下载整个符号列表并将其保存为 csv 需要将近 3 个小时。下载每个符号大约需要 3-4 秒。
我想知道,是否可以/更快地使用多处理/超线程来加快此过程?
应用多进程的正确方法是什么 或多线程来加快进程?
def f():
for ticker in tickers:
df = get_eod_data(ticker, ex,api_key='xxxxxxxxxxxxxxxxxxx')
df.columns = ['Open','High','Low','Close','Adj close','Volume']
df.to_csv('Path\to\file\{}.csv'.format(ticker))
p = Pool(20)
p.map(f)
谢谢!!
经过一些研究,我认为这是最好的方法:
x = ['1','2','3','4','5','6', ..... '3000']
def f(x):
df = get_eod_data(ticker, ex,api_key='xxxxxxxxxxxxxxxxxxx')
df.columns = ['Open','High','Low','Close','Adj close','Volume']
df.to_csv('Path\to\file\{}.csv'.format(ticker))
def mp_handler_1():
p1 = multiprocessing.Pool(10)
p1.map(f, x)
if __name__ == '__main__':
mp_handler_1()
下载所有符号原来需要 3 - 4 个小时,使用 multiprocessing.Pool 需要 35 - 40 分钟!!它创建了 10 python 个进程并并行处理函数,没有数据丢失或损坏。唯一的缺点是,如果这需要比可用内存更多的内存,那么您将得到 MemoryError。