相关疑难解决方法(0)

将列表拆分为大约相等长度的N个部分

将列表划分为大致相等的部分的最佳方法是什么?例如,如果列表有7个元素并将其拆分为2个部分,我们希望在一个部分中获得3个元素,而另一个应该具有4个元素.

我正在寻找像even_split(L, n)这样的东西L分成n几部分.

def chunks(L, n):
    """ Yield successive n-sized chunks from L.
    """
    for i in xrange(0, len(L), n):
        yield L[i:i+n]
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了3个块,而不是3个块.我可以简单地转置(迭代它并获取每列的第一个元素,调用第一部分,然后取第二部分并将其放入第二部分等),但这会破坏项目的顺序.

python list chunks

134
推荐指数
15
解决办法
13万
查看次数

使用 Python (PostGIS/PostgreSQL) 进行令人尴尬的并行数据库更新

我需要更新空间数据库中的每条记录,其中我有一个覆盖多边形数据集的点数据集。对于每个点要素,我想分配一个键以将其与它所在的多边形要素相关联。因此,如果我的点“纽约市”位于多边形美国内,而对于美国多边形“GID = 1”,我将为我的点纽约市分配“gid_fkey = 1”。

为此,我创建了以下查询。

procQuery = 'UPDATE city SET gid_fkey = gid FROM country  WHERE ST_within((SELECT the_geom FROM city WHERE wp_id = %s), country.the_geom) AND city_id = %s' % (cityID, cityID)
Run Code Online (Sandbox Code Playgroud)

目前,我正在从另一个查询中获取 cityID 信息,该查询仅选择 gid_fkey 为 NULL 的所有 cityID。基本上我只需要遍历这些并运行前面显示的查询。由于查询仅依赖于其他表中的静态信息,因此理论上所有这些过程都可以同时运行。我已经实现了下面的线程程序,但我似乎无法迁移到多处理

import psycopg2, pprint, threading, time, Queue

queue = Queue.Queue()
pyConn = psycopg2.connect("dbname='geobase_1' host='localhost'")
pyConn.set_isolation_level(0)
pyCursor1 = pyConn.cursor()

getGID = 'SELECT cityID FROM city'
pyCursor1.execute(getGID)
gidList = pyCursor1.fetchall()

class threadClass(threading.Thread):

def __init__(self, queue):
        threading.Thread.__init__(self)
        self.queue = queue

def run(self):

        while …
Run Code Online (Sandbox Code Playgroud)

python postgresql postgis multiprocessing

3
推荐指数
1
解决办法
3920
查看次数

标签 统计

python ×2

chunks ×1

list ×1

multiprocessing ×1

postgis ×1

postgresql ×1