python中的简单并行处理

paraproc的Python项目详细描述


https://img.shields.io/pypi/v/paraproc.svghttps://img.shields.io/badge/license-MIT-green.svg

概述

paraproc是一个简单的库,可以帮助您轻松地并行计算 (独立的数据块)在python中跨越多个进程,特别是 当您想混合调用外部命令行程序和手工酿造时 python在数据处理管道中一起工作。

在幕后,它将子流程和多处理结合起来,并使用一个流程池 安排工作。它还提供了一个numpy.ndarray接口来访问 跨多个进程共享内存。

paraproc同时支持python 2和3,而numpy是唯一的外部依赖项。 它只包含在一个python文件中,因此可以很容易地将其复制到项目中。 (必须保留版权和许可通知。)

稍后可以找到演示库的基本用法的代码片段 在本文档和演示文件中。

错误可以报告给https://github.com/herrlich10/paraproc。 代码也可以在那里找到。

快速启动

并行执行命令

您可以并行运行python代码和命令行程序:

importosimportparaprocdefmy_job():print(os.getpid())pc=paraproc.PooledCaller()forkinrange(5):pc.check_call(my_job)forkinrange(5):pc.check_call('echo $$',shell=True)# For linux/macpc.wait()

pc.check_call()方法将立即返回。实际执行 排队的命令将被延迟,直到您调用pc.wait()

使用共享内存

您可以在共享内存中加载大数据,并读取或写入它们 作为来自多个进程的普通numpy数组:

importnumpyasnpimportparaprocdefslow_operation(k,x):x.acquire()x[:100000,:]+=1# Write accessres=np.mean(x)# Read accessx.release()print('#{0}: mean = {1}'.format(k,res))a=paraproc.SharedMemoryArray.from_array(np.random.rand(1000000,500))# About 4 GBpc=paraproc.PooledCaller()forkinrange(pc.pool_size):pc.check_call(slow_operation,k,a)pc.wait()

a中的数据在所有子进程和 即使有写访问,也从不复制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓软件包与java代码中的类型冲突   谷歌应用引擎Java还是Python?   如何将java bean传递到jsp页面,以便jqQrid使用json显示?   在编译kotlin代码时,kotlin编译器如何处理java代码?   java不准确地更改JTextPane中的文本颜色   反应式编程AWS SDK v2 SdkAsyncHttpClient使用Java 11 Java实现。网http HttpClient sendAsync   在Spring AMQP中,java根据队列的消费者计数来消费队列   java在ArrayList的add()方法中创建新对象会导致内存泄漏。我能做什么不同的事?   未将java BufferedReader特定行追加到字符串   用于聊天程序格式化的java JavaFX 2文本区   java如何从netbeans项目生成exexutable文件?   swing如何在Java中使用JButton操作调整JWindow的宽度和高度?   java有没有办法在spring boot中使用jasypt aes加密和解密?   java通过使用泛型如何将映射作为集合传递给方法?   java如何替换不推荐使用的构造函数DynamoDBMapperFieldModel