V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  black11black  ›  全部回复第 4 页 / 共 28 页
回复总数  548
1  2  3  4  5  6  7  8  9  10 ... 28  
2020-12-28 23:33:04 +08:00
回复了 black11black 创建的主题 问与答 Python 设计一个能够自动释放未占用的资源的线程池
@lpts007 他这个解决方案就是问题发生在回调的位置,比如到时间以后 queue 抛出异常,只需要在抛出异常之前修改计数就可以了,没什么复杂的。只是 python 这个回调都是用 c 实现的,不好修改。
2020-12-28 23:29:49 +08:00
回复了 black11black 创建的主题 问与答 Python 设计一个能够自动释放未占用的资源的线程池
@lpts007 确实,直接 sleep 就行了。我脑袋里一直在想单个语句拆解成多个 byte code 解释,限制了思路
2020-12-28 16:09:14 +08:00
回复了 black11black 创建的主题 问与答 Python 设计一个能够自动释放未占用的资源的线程池
大概翻了一下,目前结论基本以我的技术力来说是解决不了了。他这个问题解决办法只能是进入回调当中修改,在线程抛出异常之前修改计数。翻了翻,SimpleQueue 引用自 DLLS\_queue.pyd 来自源码包里的 _queuemodule.c.h 和 _queuemodule.c, 如果用纯 python 实现的话,关键的计时唤醒功能来自 threading.Semaphore() , 里面的实现调用的內建库 _thread, 这个库没有__file__属性,找不到源码,具体细节就涉及 python 本身编译了,以前没搞过,看不懂了。

解决方法应该是要传入参数,在回调前调用这个统计计数减,并且在 concurrent.futures.ThreadPoolExecutor 调用 _adjust_thread_count 时,其中的判断语句也要加锁。完成这两个步骤应该可以解决问题,但编译的部分搞不定,算了。

目前能做的大概是增大最小线程数量,随时保有一定线程数的话可以减小故障发生概率,只要不是所有既存线程全部满载,都会用空载线程推动前进。
2020-12-28 15:25:05 +08:00
回复了 black11black 创建的主题 问与答 Python 设计一个能够自动释放未占用的资源的线程池
@lpts007 谢谢你,其实也没咋生气,其实还行。主要是第一遍描述他上来就很不客气,我也很不客气地回了一下,怕他没听懂就又描述了一遍,结果他还是没听懂,我无语顺便吐槽。

他这个遇到的问题我以前还真没遇到过,完全不知道怎么解决。之前以为线程锁啥的挺单纯的东西,线程之间逻辑理顺了不会出什么问题。但是他这个现在类似于事件驱动的回调,没有办法按顺序执行的方法加锁,在异常抛出的一瞬间已经没有监听功能了,但是不能马上调整统计状态。不知道怎么解决,也不知道怎么跟别人讨论,甚至不知道怎么跟别人描述。。
2020-12-28 13:59:40 +08:00
回复了 black11black 创建的主题 问与答 Python 设计一个能够自动释放未占用的资源的线程池
@lpts007 这个作者也是逗比,我去他那里 issue,他根本都没看懂我说的问题是什么,这 repo 真的是他写的么。。
2020-12-28 10:17:06 +08:00
回复了 black11black 创建的主题 问与答 Python 设计一个能够自动释放未占用的资源的线程池
@lpts007 绝了,但他这个库我发现锁里有一个问题,容易导致死锁。在超时之后,结束阻塞之后,催回线程之前,默认线程都还是激活的,不知道怎么解决。
2020-12-28 09:24:46 +08:00
回复了 black11black 创建的主题 问与答 Python 设计一个能够自动释放未占用的资源的线程池
@lpts007 感谢,看了一下代码,启发很大。感觉实现的并不脏,逻辑上没什么冗余,就是写法不太好看而已。我根据原生库重写了一份,已经传 Github 了 https://github.com/GoodManWEN/ThreadPoolExecutorPlus
2020-12-28 04:35:04 +08:00
回复了 black11black 创建的主题 问与答 Python 设计一个能够自动释放未占用的资源的线程池
@renmu123 aiomysql 重写协议了。异步基本几种做法,一种完全原生重写,一种猴子补丁,我没用过,不知道能不能跟原生接口的兼容,再一种像我这样封装线程
是,下一个
2020-12-27 16:53:05 +08:00
回复了 black11black 创建的主题 问与答 Python 线程池有办法自动释放不在使用中的资源吗?
@black11black 同步执行一千条插入命令(比如业务上让他们没法被整合到同一条插入命令),这种需求我觉得还是挺常见的。但是如果要实现的话就要开 1000 个线程准备着,这也太蠢了,没办法用的时候现场申请吗。
2020-12-27 16:50:16 +08:00
回复了 black11black 创建的主题 问与答 Python 线程池有办法自动释放不在使用中的资源吗?
@wellsc 这次折腾多线程的原因是,在用多线程封装一个同步 oracle 库,让他能在协程中使用。我肯定没时间再仔细用协程实现一个通讯协议,直接用多线程封装同步库是个很好的办法。只不过似乎并发能力和内存 /线程数似乎无法平衡。
2020-12-27 16:44:56 +08:00
回复了 tonghuashuai 创建的主题 随想 TESTV 这期节目很有温度
@edinina 该有的没有,不该有的一堆。

平常工作还是用 QQ 多,一来表情方便,而来超文本的东西适配的好,三来协同办公做的好。

一比起来微信的聊天功能就是基础的不能再基础,结果你说臃肿,确实肿
1  2  3  4  5  6  7  8  9  10 ... 28  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3696 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 05:03 · PVG 13:03 · LAX 22:03 · JFK 01:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.