python 链式语法,并行执行
程序员文章站
2022-07-02 09:10:11
python 与 ruby 写起来最不一样的地方就是链式调用了, ruby 几乎可以连续写下去。而python 就很麻烦了,动不动就要用全局定义的函数,有害还要突然在上面定义个函数之类的,更甚至 lambda 里面不能显示使用’='赋值。今天发现个 seq 方法,勉强能解决部分问题,记录一下seq 文档查询 里面实现了很多方法,写起来能像ruby 了。from functional import seqwets=np.zeros(len(lines), np.float32)vids_w = se...
链式语法
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