轻量级线程和异步任务库
neotasker的Python项目详细描述
新任务者
用于现代线程/多处理池和任务的轻量级Python库 通过异步处理。在
Neotasker是 atasker库:任务没有 优先级,直接转到ThreadPoolExecutor,是标准的Python未来 物体。这个库对于轻量级的高负载项目非常有用 任务作为大多数任务直接代理到池。在
Neotasker工作在ThreadPoolExecutor和asyncio之上,并提供 附加功能:
- 简单的线程池和异步循环初始化
- 基于间隔、队列和事件的工作线程
- 与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()
- 项目
标签: