weixin_59094960 2022-08-22 22:04 采纳率: 55.6%
浏览 109
已结题

多线程还是多进程哪个更快?如何显示进度?

问题遇到的现象和发生背景

有如下爬取网上股票数据的代码,经天元浪子 提示这个属于多进程运行。请问在这个程序里,多线程和多进程哪个更高效合适?因为要获取全部股票数据有五千个,用哪个最能节省时间?另外我想显示完成进度(已完成数/总数),应该怎样加代码?不胜感激。

问题相关代码,请勿粘贴截图
import pandas as pd
import os
from multiprocessing.pool import Pool

def updateStock_pool_per(arg_list):
    download_url = arg_list[0]
    stock_path = arg_list[1]
    stock_code = arg_list[2]
    df = pd.read_csv(download_url, encoding='gbk')  # 直接将网上的文件数据读取下来
    path = os.path.join(stock_path, stock_code + '.csv')
    df.to_csv(path, index=False, encoding='gbk')  # 保存到文件
    return stock_code

def updateStock(stock_path, stock_code_list):
    arg_list = []
    for stock_code in stock_code_list:
        download_url = 'http://quotes.money.163.com/service/chddata.html?code=' + stock_code + '&start=20220719&end=20220819&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;VOTURNOVER;VATURNOVER;TCAP;MCAP'  # 构造url
        list_ = [download_url, stock_path, stock_code]
        arg_list.append(list_)

    # pool 每组参数只有一个,多参数封装list中list传入
    with Pool(processes=4) as pool:
        update_success_list = pool.map(updateStock_pool_per, arg_list) 
    print('*' * 50)
    update_all_count = len(stock_code_list)  # 一共需要更新的股票数量
    update_success_count = len(update_success_list)

    update_fail_list = []
    for m in stock_code_list:
        if m not in update_success_list:
            update_fail_list.append(m)
    update_fail_count = len(update_fail_list)
    print('共准备更新 {} 支股票, {} 支股票增加数据, {} 支股票下载数据有错'.format(update_all_count, update_success_count, update_fail_count))
    if update_fail_list:
        print(f'下载以下股票时出错\n{update_fail_list}')


if __name__ == '__main__':
    stock_path = r'C:\Users\Administrator\Desktop\stock'
    stock_code_list = ['1002296', '1002364', '1000826', '0600981', '1000997', '1000901', '1300291', '1300002', '1002051', '1300252']
    updateStock(stock_path, stock_code_list)
我想要达到的结果

1多线程和多进程哪个更快,给出代码。2显示进度。

  • 写回答

5条回答 默认 最新

  • PENGCM 2022-08-23 02:08
    关注

    Python中单线程、多线程和多进程的效率对比实验
    https://www.runoob.com/w3cnote/python-single-thread-multi-thread-and-multi-process.html

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月6日
  • 已采纳回答 8月29日
  • 创建了问题 8月22日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么