具有队列管理和redis特性的多进程装饰器

pytchfork的Python项目详细描述


#pytchfork[![PYPI版本](https://badge.fury.io/py/pytchfork.svg)(https://badge.fury.io/py/pytchfork)[![构建状态](https://travis-ci.org/shaunvxc/pytchfork.svg?branch=master)(https://travis-ci.org/shaunvxc/pytchfork)[![覆盖状态](https://coveralls.io/repos/shaunvxc/pytchfork/badge.svg?branch=master&service=github)(https://coveralls.io/github/shaunvxc/pytchfork)


从多处理导入队列导入pytchfork

@pytchfork(3)
def do-work(queue):
data=queue.get()
process(data)


queue=queue()

do-work(queue)\n此调用将派生3个进程
`````
pytchfork还可以管理工作进程的队列。只需提供对decorator的必要引用,
它将负责轮询队列并将数据传递给工作线程。

``python
from pytchfork import pytchfork
from multiprocessing import queue

@pytchfork(3,read_from=work廑queue,write廑to=done廑queue,sentinel=“done”)
def process_data(data):
processed_data=do_something(data)
返回processed_data

process_data();此调用将从工作队列读取3个进程&;写入完成队列。
````
为此,只需将“redis-uri”和“redis-port”传递给pytchfork decorator(除字符串值之外,redis还将用于键控“work-queue”和“done-queue”)。

`` python
从pytchfork导入pytchfork

@pytchfork(2,从'work''queue'读取,写入'done''u queue',redis''localhost',redis''u port=6379)
def process''u data(data):
processed''u data=do''u something(data)
return processed''u data

process'.在上面的代码片段中,这些进程将作为守护进程连续运行。对于具有固定数量的输入数据的较小任务,这可能不是理想的。
BR/>为了使进程在完成时退出,将“哨兵”参数传递给装饰器。要使此工作正常,redis-work-queue必须清楚地用sentinel的“N”个出现标记结尾,其中“N”是所需的进程数







`` python

对于范围(0,num_procs):
redis_client.lpush(“工作队列”,sentinel)

redis_port=port)
def process_data(data):
processed_data=do_something(data)
返回processed_data

process_data();这将分叉2个读/写到redis的进程。每个进程在从ReISIS工作队列中删除一个前哨值时,
退出,以进一步参考这一点,参见'Test/TestJoanCaltual.Py’.Br/>< Br/>上下文管理器> BR/>。您还可以使用上下文管理器来获得多处理池对象,而不必管理该对象。池的生命周期。即:

`` python
从pytchfork导入pytchfork

使用pytchwork(num_procs)as forked:
res=forked.map_async(process_data,data,callback=callback)
`````

此构造确保在块中的代码完成时关闭、联接和终止工作进程

分叉(https://github.com/shaunvxc/pytchfork/fork)
1.创建功能分支(`git checkout-b new feature`)
1提交更改(`git commit-am'add some feature`)
1。运行测试(`make test`)
1。将更改推送到分支(`git push origin new feature`)
1。创建拉取请求

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

推荐PyPI第三方库


热门话题
打开OrientDB数据库时发生java错误   java Hibernate合并函数偶尔会导致主键冲突   java如何在SourceTransferndexit将msg放入MQ   JavaEclipse不正确地导入项目   Java中的数据结构,带有删除节点后所有节点的操作   java创建zip存档时,什么构成重复条目   java如何计算所有值并比较每个对象?   java Threadflipbegin在Google Pixel 3上被阻止55秒   java Eclipse Hibernate:未找到适合jdbc的驱动程序:mysql://localhost:3306/hibernatedb   java Quartz计划程序未运行   java如何从junit扩展向@Test返回值?   java忽略搜索字段中的大小写   java如何从图库中选取图像,裁剪并保存在数据分区中   java CST/CDT时区更改问题   url从Java读取Twitter页面   java是否要在每个列表项中打开WebView单击?   比较输入值的Java布尔逻辑初学者   如何在服务器端使用java从客户端的HTTP POST请求接收和解析JSON对象   javascript在一个get请求中,如何启动程序,然后使用另一个get请求停止它?