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: Python 可以使用多线程或多进程来实现并行执行一个操作。其中,多线程适合于 I/O 密集型任务,而多进程适合于 CPU 密集型任务。可以使用 threading 或 multiprocessing 模块来实现多线程或多进程。同时,也可以使用 asyncio 模块来实现协程并发执行。 ### 回答2: Python提供了多种方式用于同时并行执行一个操作。 首先,可以使用多线程来实现并行执行Python提供了threading模块来创建和管理线程。通过创建多个线程,每个线程负责执行一个操作,可以实现并行执行。可以使用threading.Thread类创建线程,并使用start()方法启动线程。 其次,可以使用多进程来实现并行执行Python提供了multiprocessing模块来创建和管理进程。通过创建多个进程,每个进程负责执行一个操作,可以实现并行执行。可以使用multiprocessing.Process类创建进程,并使用start()方法启动进程。 另外,可以使用协程来实现并行执行Python提供了asyncio模块来支持协程编程。通过使用async和await关键字,可以将一个操作分成多个小的部分,在每个部分执行完毕之后切换到下一个部分,从而实现并行执行。 此外,还可以使用第三方库如concurrent.futures和joblib来实现并行执行。这些库提供了高级的接口,简化了并行执行的过程,可以方便地实现并行执行操作。 总之,Python提供了多种方式来实现并行执行一个操作,包括多线程、多进程、协程和第三方库,开发者可以根据具体的需求选择合适的方式。 ### 回答3: Python可以使用多线程和多进程来实现同时并行执行一个操作。 使用多线程可以在一个程序中同时执行多个线程,并且每个线程可以独立运行。Python提供了threading模块来支持多线程编程。可以通过创建Thread对象并指定需要执行的函数来创建线程。可以通过start()方法来启动线程,并使用join()方法等待线程执行完成。在多线程编程中,需要注意线程之间的同步与互斥,以避免出现竞争条件和死锁等问题。 使用多进程可以在一个程序中同时执行多个进程,每个进程有自己独立的地址空间和系统资源。Python提供了multiprocessing模块来支持多进程编程。可以通过创建Process对象并指定需要执行的函数来创建进程。可以通过start()方法来启动进程,并使用join()方法等待进程执行完成。不同进程之间的通信可以使用队列、管道等方式进行。 同时,Python还提供了异步编程的解决方案,如asyncio模块,通过使用异步io操作和协程等技术,可以实现高效的并行执行。在异步编程中,可以通过async/await语法和事件循环机制来实现并行操作。 总而言之,Python可以使用多线程、多进程和异步编程等方式来实现同时并行执行一个操作,具体选择哪种方式取决于具体的场景和需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值