轻量级线程和异步任务库

neotasker的Python项目详细描述


新任务者

用于现代线程/多处理池和任务的轻量级Python库 通过异步处理。在

Neotasker是 atasker库:任务没有 优先级,直接转到ThreadPoolExecutor,是标准的Python未来 物体。这个库对于轻量级的高负载项目非常有用 任务作为大多数任务直接代理到池。在

Neotasker工作在ThreadPoolExecutorasyncio之上,并提供 附加功能:

  • 简单的线程池和异步循环初始化
  • 基于间隔、队列和事件的工作线程
  • aiosched的内置集成

安装

pip3 install neotasker

来源:https://github.com/alttch/neotasker

文档:https://neotasker.readthedocs.io/

代码示例

启动/停止

^{pr2}$

执行未来

您可以使用neotasker.thread_池直接或使用 任务_主管.spawn函数,它直接映射到 线程_池.提交

fromneotaskerimportthread_poolthread_pool.start()defmytask(a,b,c):print(f'I am working in the background! {a}{b}{c}')return777task=task_supervisor.spawn(mytask,1,2,c=3)# get future resultresult=task.result()

创建异步io循环

fromneotaskerimportthread_poolthread_pool.start()task_supervisor.create_aloop('default',default=True)# The loop will until supervisor is stopped# Spawn coroutine from another thread:task_supervisor.get_aloop().spawn_coroutine_threadsafe(coro)

工人示例

fromneotaskerimportbackground_worker,task_supervisortask_supervisor.start()# we need to create at least one aloop to start workerstask_supervisor.create_aloop('default',default=True)# create one more async looptask_supervisor.create_aloop('loop2')@background_workerdefworker1(**kwargs):print('I am a simple background worker')@background_workerasyncdefworker_async(**kwargs):print('I am async background worker')@background_worker(interval=1,loop='loop2')defworker2(**kwargs):print('I run every second!')@background_worker(queue=True)defworker3(task,**kwargs):print('I run when there is a task in my queue')@background_worker(event=True)defworker4(**kwargs):print('I run when triggered')worker1.start()worker_async.start()worker2.start()worker3.start()worker4.start()worker3.put_threadsafe('todo1')worker4.trigger_threadsafe()fromneotaskerimportBackgroundIntervalWorkerclassMyWorker(BackgroundIntervalWorker):defrun(self,**kwargs):print('I am custom worker class')worker5=MyWorker(interval=0.1,name='worker5')worker5.start()

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

推荐PyPI第三方库


热门话题
将PHP生成的公钥转换为Java公钥   java在服务中启动可取消的后台任务   java我能做这个通用的事情吗?   java Axis 1.4.1版在IBM上的部署为8.5版   java如何进行同步web服务调用   java从Spring控制器中的多个select获取值   java如何在JFrame中声明类(包含sapache Poi)的对象   jaxb反序列化XML以在Java中动态创建类   java如何为部署在Google云上的应用程序实现Google OAuth?   java我想了解libgdx的资产管理器   Java整数溢出   Windows任务管理器javaw。exe内存与Java任务控制   java如何让Android等待?