python 链式语法,并行执行

链式语法

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

警用stderr

class HiddenPrints:
    def __enter__(self):
        self._original_stdout = sys.stderr
        sys.stderr = open(os.devnull, 'w')

    def __exit__(self, exc_type, exc_val, exc_tb):
        sys.stderr.close()
        sys.stderr = self._original_stdout
with HiddenPrints():
	response = stub.Process(img_pkg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值