Python中文
首页
教程
问答
标签
搜索
登录
注册
将线程置于休眠状态,直到事件X发生
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在一个线程应用程序中写入许多文件,并为每个文件创建一个处理程序。我有HandlerFactory类来管理这些处理程序的分发。我想做的是</p> <p>线程A请求并从HandlerFactory类获取foo.txt的文件句柄</p> <p>线程B请求foo.txt的文件处理程序</p> <p>处理程序类识别此文件句柄已签出</p> <p>处理程序类使线程A休眠</p> <p>线程B使用来自HandlerFactory的包装器方法关闭文件句柄</p> <p>HandlerFactory通知休眠线程</p> <p>线程B唤醒并成功获取foo.txt的文件句柄</p> <p>这就是我目前所拥有的</p> <pre><code>def get_handler(self, file_path, type): self.lock.acquire() if file_path not in self.handlers: self.handlers[file_path] = open(file_path, type) elif not self.handlers[file_path].closed: time.sleep(1) self.lock.release() return self.handlers[file_path][type] </code></pre> <p>我相信这将成功地覆盖休眠和处理程序检索,但我不确定如何唤醒所有线程,甚至更好地唤醒特定线程。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你确实意识到Python有一个巨大的锁,所以多线程的大部分好处你都得不到,对吧?</p> <p>除非主线程有理由对每个工作线程的结果执行某些操作,否则您可能希望考虑为每个请求派生另一个进程。那么你就不必处理锁定问题了。让孩子们做他们需要做的事,然后死去。如果他们确实需要通信,可以通过管道、XMLRPC或sqlite数据库(这是线程安全的)进行通信。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
区分轴上的像素大小
3 回答
区分过度拟合与良好预测
4 回答
区分通过POST接收的数据并在Cherrypy中获取
10 回答
区分重写和重载
5 回答
区分金贾二号的类型
4 回答
区别:IF IN和IF==python
6 回答
区别:list.append()与incrementequal?
2 回答
区别:创建在启动wx应用程序时不“阻止”控制台的脚本
9 回答
区别于python中的命令行和CGI
6 回答
区别关系
6 回答
区别是什么APIClient.enforce\ csrf\检查以及APIClient.handler.enforce\ csrf\ u检查
2 回答
区块.draw()未在python空闲模式下工作
5 回答
区块链API调用输出对象名称而不是内容
1 回答
区块链nonce值随负载变化
3 回答
区块链Python语法错误(Snakecoin)
4 回答
区块链不连接到服务器和矿工
2 回答
区块链信息钱包支票支付员
1 回答
区块链和区块链密码错误
1 回答
区块链尝试向Transaction字典添加键/值以创建区块链
6 回答
区域:IOError:[Errno 22]无效模式('w')或filenam
1 回答