没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
对于某个城市的出租车数据,一天就有33210000条记录,如何将每辆车的数据单独拎出来放到一个专属的文件中呢? 思路很简单: 就是循环33210000条记录,将每辆车的数据搬运到它该去的文件中。 但是对于3000多万条数据,一个一个循环太消耗时间,我花了2个小时才搬运了60万数据,算算3000万我需要花费100个小时,也就需要4-5天。并且还需要保证这五天全天开机,不能出现卡机的事故。 因此,需要使用并行进行for循环的技巧: 由于3000万数据放到csv中导致csv打不开,因此我就把一个csv通过split软件将其切分成每份60万,共53个csv。 我原来的思路是读取文件夹,获取由每一个60
资源推荐
资源详情
资源评论






















如何提高如何提高python 中中for循环的效率循环的效率
对于某个城市的出租车数据,一天就有33210000条记录,如何将每辆车的数据单独拎出来放到一个专属的文件中呢?
思路很简单:思路很简单:
就是循环33210000条记录,将每辆车的数据搬运到它该去的文件中。
但是对于3000多万条数据,一个一个循环太消耗时间,我花了2个小时才搬运了60万数据,算算3000万我需要花费100个小
时,也就需要4-5天。并且还需要保证这五天全天开机,不能出现卡机的事故。
因此,需要使用并行进行因此,需要使用并行进行for循环的技巧:循环的技巧:
由于3000万数据放到csv中导致csv打不开,因此我就把一个csv通过split软件将其切分成每份60万,共53个csv。
我原来的思路是读取文件夹,获取由每一个60万的csv文件组成的列表,再分别对每一个60万的csv进行处理。实质上还是循
环33210000次,并行for循环就是同时处理几个60万的csv文件,就能成倍的减少时间消耗。
并行进行并行进行for循环是受下面的方法启发:循环是受下面的方法启发:
我之前的做法类似这样:
words = ['apple', 'bananan', 'cake', 'dumpling'] for word in words:
print word
并行for循环类似这样:
from multiprocessing.dummy import Pool as ThreadPool
items = list()
pool = ThreadPool()
pool.map(process, items)
pool.close()
pool.join()
其中,process是进行处理的函数
实例代码如下:
# -*- coding: utf-8 -*-
import time
from multiprocessing.dummy import Pool as ThreadPool
def process(item):
print('正在并行for循环')
print(item)
time.sleep(5)
items = ['apple', 'bananan', 'cake', 'dumpling'] pool = ThreadPool()
pool.map(process, items)
pool.close()
pool.join()
补充知识:补充知识:Python3用多线程替代用多线程替代for循环提升程序运行速度循环提升程序运行速度
优化前后新老代码如下:
from git_tools.git_tool import get_collect_projects, QQNews_Git
from threading import Thread, Lock
import datetime
base_url = "http://git.xx.com"
project_members_commits_lang_info = {}
lock = Lock()
threads = []
'''
Author:zenkilan
'''
def count_time(func):
def took_up_time(*args, **kwargs):
start_time = datetime.datetime.now()
ret = func(*args, **kwargs)
资源评论

- m0_464862862023-06-28这个资源总结的也太全面了吧,内容详实,对我帮助很大。

weixin_38591615
- 粉丝: 8
- 资源: 909
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
