python 链式语法,并行执行

2022-07-28,,,,

链式语法

python 与 ruby 写起来最不一样的地方就是链式调用了, ruby 几乎可以连续写下去。而python 就很麻烦了,动不动就要用全局定义的函数,有害还要突然在上面定义个函数之类的,更甚至 lambda 里面不能显示使用’='赋值。

今天发现个 seq 方法,勉强能解决部分问题,记录一下
seq 文档查询 里面实现了很多方法,写起来能像ruby 了。

from functional import seq
wets=np.zeros(len(lines), np.float32)
vids_w = seq(lines).map(lambda x: x.split()).map(
            lambda x: (int(x[0]), float(x[1]) ) ).for_each(
                    lambda x: wets.itemset(x[0], x[1]) )

可以看到都必须要使用 numpy.ndarrad.itemset 这种方式。 如果是 dict 可以使用 setdefault,或者 update,其他的话就得自己查文档或者想办法了。

并行

参考

下面展示了,传多个参数的方法

import multiprocessing

def f1_det_lm( lines, bg, idnm ):
    cls_face = get_cls_face(dtp)
    #for line in tqdm(lines): _f1_det_lm(line, cls_face)
    cores = multiprocessing.cpu_count()
    print("cores", cores)
    # start a pool
    pool = multiprocessing.Pool(processes=cores//2)
    tasks = [ (lines[i], cls_face, i) for i in range(len(lines)) ]
    pool.map(_f1_det_lm_mul, tasks)

def _f1_det_lm_mul(args):
    _f1_det_lm(args[0], args[1])
    print( "finished", args[2]  )

def _f1_det_lm(line, cls_face): pass

本文地址:https://blog.csdn.net/ChangHongJian/article/details/109639833

《python 链式语法,并行执行.doc》

下载本文的Word格式文档,以方便收藏与打印。