gevent动态随时添加任务
保持和py的Threadpoolexecutor一样的submit 方法名,是程序更容易在两种模式之间切换。
class GeventPoolExecutor(LoggerMixin):
def __init__(self, max_works, ):
self._q = JoinableQueue(maxsize=max_works)
# self._q = Queue(maxsize=max_works)
for _ in range(max_works):
gevent.spawn(self.__worker)
atexit.register(self.__atexit) def __worker(self):
while True:
fn,args,kwargs = self._q.get()
try:
fn(*args,**kwargs)
except Exception as exc:
self.logger.exception(f'函数 {fn.__name__} 中发生错误,错误原因是 {type(exc)} {exc} ')
finally:
pass
self._q.task_done() def submit(self, fn:Callable,*args,**kwargs):
self._q.put((fn,args,kwargs)) def __atexit(self):
self.logger.critical('想即将退出程序。')
self._q.join()
gevent动态随时添加任务的更多相关文章
- winform 用户控件、 动态创建添加控件、timer控件、控件联动
用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- Pyqt 动态的添加控件
Pyqt 动态的添加控件 # -*- coding: utf-8 -*- from PyQt4.QtCore import * from PyQt4.QtGui import * import sys ...
- winform用户控件、动态创建添加控件、timer控件、控件联动
用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...
- 在<s:iterator>标签里给动态表格添加序号
在<s:iterator>标签里给动态表格添加序号,需要用到<s:iterator>标签里的Status属性里的count eg:<s:iterator value=&q ...
- autoHeight # 动态高度添加 用 window.addEventListener('resize', function () {
动态高度添加 用 window.addEventListener('resize', function () { mounted () { this.init() window.addEventLis ...
- 【转】ArcGIS Server 10.1 动态图层—添加栅格
本文将介绍如何通过arcgisserver10.1动态图层添加栅格影像.与添加矢量数据不同的是,天际栅格用到了RasterDataSource接口,如下所示 <esri:DynamicLayer ...
- EF Core3.1 CodeFirst动态自动添加表和字段的描述信息
前言 我又来啦.. 本篇主要记录如何针对CodeFirst做自动添加描述的扩展 为什么要用这个呢.. 因为EF Core3.1 CodeFirst 对于自动添加描述这块 只有少部分的数据库支持.. 然 ...
- 将动态库添加到VC程序中
应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接.在使用DLL之前首先要知道DLL中函数的结构信息.Visual C++6.0在VC\bin目录下提供了一个名为Dumpbin.ex ...
随机推荐
- 每日英语:Can Going In and Out of Air Conditioning Cause Colds?
For most people, summer involves numerous daily shifts between scorching outdoor heat and frosty air ...
- 每日英语:China's Retirement Age Sets Experts at Odds
The politically explosive issue of the official retirement age has drawn academics from two of China ...
- 将socket通信变成并发的方式
一 利用multiprocessing模块,开启多进程,实现socket通信并发 1. 开启子进程的两种方式 import time import random from multiprocessin ...
- gradle本地文件仓库 (52.6.5. Flat directory repository)
If you want to use a (flat) filesystem directory as a repository, simply type: Example 52.32. Flat r ...
- ios的一些经验记录1
1.UITextAlignment ---> NSTextAlignment 2.找不到segue viewcontroller 与segue要对应 3.标题栏用NavigationContr ...
- resource文件
Resources的详情见http://www.csharpwin.com/dotnetspace/10957r3991.shtml 1.create public static void Main( ...
- 为gridview的每个单元格添加鼠标悬停提示文本(tooltip)
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { for (int i ...
- Linux 完整的修改用户名,用户组的方法记录
今天将虚拟机内所有的用户都是统一规划自己的名字,方便识别操作,特记录相关修改Linux 用户名以及修改用户组的方法 第一种方式,直接改相关文件: /etc/passwd 如图所示,改为自己想用户名,描 ...
- Remote Desktop Connection没法全屏解决方案
Remote Desktop Connection无法全屏解决方案Sometimes, Remote Desktop Connection总是一个窗口,不自动全屏,任务栏不能自动隐藏起来,要拖动滚动条 ...
- 创建一个简单的 MDM server(1)
前提:已获得 APNS 证书 ,已完毕 MDM 配置描写叙述文件的制作.请參考< MDM 证书申请流程 >一文和<配置MDM Provisioning Profile>. 环境 ...