用于函数、循环和排队的工人等的各种工具。

pyaltt的Python项目详细描述


Pyalt

此库已弃用,不再受支持

改用atasker

用于函数、循环和排队的工人等的各种工具。

许可证:apache license 2.0

函数集合

收集并执行一组函数

用法示例:

frompyalttimportFunctionCollectonfc=FunctionCollecton()@fcdeff1():print('I am function 1')return1@fcdeff2():print('I am function 2')return2result=fc.run()# or fc(), returns dict containing all function results

实际示例:定义dump函数集合并调用dump.run()或 只需dump()即可收集注册的模块信息。

现实生活中的例子2:defineshutdown函数集合和调用 shutdown()停止后台工作线程。

参数:

  • on_error函数,如果任何函数抛出一个exption,则调用该函数 (e=异常参数),或者如果调用了remove方法并函数 收藏中不存在。
  • on_error_kwargson_error的附加参数
  • 包含异常如果函数失败,结果dict中的值设置为 默认情况下无。指定include_exceptions=true将值设置为 元组(异常,回溯)

run()方法实际上只调用了return self.execute(),因此您可以很容易地 覆盖它。除了函数result dict,如果 所有的函数都是在没有异常的情况下执行的,如果没有异常,false

defmy_run():print('Shutdown started')result,success=fc.execute()ifsuccess:print('Shutdown finished')else:print('Shutdown failed')returnresultfc.run=my_run

背景工作者

循环工人装饰工

在循环中执行方法的简单后台工作程序,具有间隔/延迟 如果设置,

用法示例:

frompyalttimportbackground_worker#transforms function into background worker which run in a loop@background_workerdefmyworker(**kwargs):print('I\'m a worker '+kwargs.get('worker_name'))myworker.start()# ................myworker.stop()

@background\u worker的参数:

  • 名称可选工作机名称(默认为函数名)
  • 后台进程将后台工作进程设置为后台进程(默认值为true
  • oWorker可以使用kwargs.get('o')
  • 获取的任何对象
  • on_error函数,如果worker抛出一个exption(with e=异常参数)
  • on_error_kwargson_error的附加参数
  • 在执行每个辅助函数之前延迟在执行每个辅助函数之前延迟
  • 每个工人功能后的延迟 执行
  • 间隔延迟后的间隔相同,但它将尝试保持执行 精确间隔
  • 轮询延迟睡眠精度(越低越好,但使用CPU,默认值为0.1 秒)
  • 实时使用不同的睡眠算法更精确

注意:如果在虚拟机中运行,请取消设置"将来宾时间与主机同步" 否则,实时睡眠可能无法预测。

轮询延迟应小于或等于延迟。如果你安排的时间很短, 别忘了减少投票延迟。

此库中的实时循环执行不是100%准确,无法使用 例如重工业。实时循环需要为 特定任务和小延迟根本不能用python编码,或者 需要特殊技巧/硬件。

start()的参数:

  • \u守护进程覆盖初始参数并将worker设置为守护进程或不设置

  • name、delay、interval和realtime参数可以在start中重写(使用 带有的Kwargs:u name、u delay、u interval等)

  • 所有其他参数都传递给辅助函数(args和kwargs)

worker获取start()中使用的所有参数,另外,worker\u name 在kwargs中o(可以在start()中重写)。

worker可以通过kwargs[''u worker']访问self对象

参数wait=false可用于stop()向工人和 继续(默认为等待工作进程完成)

队列工作进程装饰器

在队列中处理任务的后台工作线程。

用法示例:

frompyalttimportbackground_worker#transforms function into background worker which run on task in queue@background_worker(q=True)defmyworker(task,**kwargs):print('Got a task %s'%task)myworker.start()# ................myworker.put('task 1')# ................myworker.stop()

参数:

  • 名称守护进程o关于"错误"的关于"错误"的与 循环工人
  • 队列类使用备用队列类(例如queue.priorityqueue, 默认值为队列,队列)。
  • 队列使用外部队列

如果设置了队列或队列类参数,则不需要设置q=true。

任务可以是任何对象(显而易见)。worker始终将task作为第一个参数。

start()/stop()的参数与循环工作机的参数相同。

事件工作者装饰器

在事件上运行方法的后台工作程序。

frompyalttimportbackground_worker#transforms function into background worker which runs on event@background_worker(e=True)defmyworker(**kwargs):print('event triggered')myworker.start()# ................myworker.trigger()# ................myworker.stop()

参数:

  • 名称守护进程o关于"错误"的关于"错误"的与 循环工人
  • 事件使用外部线程.event()对象。如果设置了此参数, e=真不是必需的。

start()/stop()的参数与循环工作机的参数相同。

从辅助进程停止循环

这可以通过两种方式完成:从worker函数调用myworker.terminate() 或者只需返回false

直接使用类

如果在类中定义了可能继承或具有 多个对象、后台工作类不应使用包装器。

类名:

  • pyaltt.backgroundworker
  • pyaltt.backgroundqueueworker
  • pyaltt.backgroundeventworker

您可以重写循环方法,以便在worker时执行自己的函数 开始。

循环调用实际上是工作函数的run函数(相同 在上面的示例中进行了修饰/转换)。

(c)2018-2019年Altertech集团,https://www.altertech.com/" rel="nofollow">https://www.altertech.com/

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

推荐PyPI第三方库


热门话题
tomcat Java条带错误   java OPENTSDB fsck修复程序不更正重复点   java JavaFX在控制器内切换自身的可见性   java maven surefire插件未并行执行运行程序   读取导致Freemarker模板引擎中TemplateException的Java对象   无法使Java库与我的Android应用程序一起工作   安卓 java。lang.IllegalStateException游标   使用Java检索XML文件中的XSL URL和名称   java如何从文本文件集合中提取特定值   电子邮件java mail gmail   java为什么finalize()只被垃圾收集器调用一次?   java方法findViewById(int)对于Json类型是未定义的。蛇形   java在安卓中尝试从brother打印机打印位图时遇到以下异常   java在颤振中支持Kotlin的优势   java从后面编写文本   java制作列表。第一个列表可以有相同的数字,第二个将是价格,尝试制作第三个列表,如果它们是相同的数字,它将添加价格