Python 板


LINE

我目前的程式有两个thread A与B. Thread A 会用append的方式写入data 到list c里面, thread B 会用for loop的方式从c的起头开始读取data. 想请教以下一个状况. ------------------------------------------------------- 假设目前list里面有100笔data. 然後thread B用以下方式开始读取data. 读取完之後,会把第1笔~第90笔data删除. code如下. for idx,data in enumerate(c): print(data) del c[:91] Thread B读取到第50笔data的时候, thread A append一笔data到c的最後面, code如下, c.append(data) ---------------------------------------------------------------- 想请问三个问题 1. Thread B 还能按造顺序读取原本list里面的第1笔到第100笔data吗? 2. Thread B 不会读取到第101笔data对吗? 3. Thread B 做完del这行code之後, c里面会只剩第91~101笔data吗? 我目前没有使用mutex来同步这两个thread的行为, 然後以上三个问题是我希望的程式执行结果. 想问如果不使用mutex的情况下, 程式会是这样的执行结果吗? 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.223.241 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1711360755.A.19C.html ※ 编辑: kakar0to (1.34.223.241 台湾), 03/25/2024 18:00:02 ※ 编辑: kakar0to (42.73.232.254 台湾), 03/25/2024 18:07:18
1F:→ lycantrope: 为什麽不用queue 03/25 18:34
2F:→ kakar0to: 好像是queue比较符合我想要的功能 03/25 18:51
3F:→ kakar0to: 不过queue能够peek吗? 因为其实thread B可能只需要第一 03/25 18:53
4F:→ kakar0to: 笔到第90笔data这样, 91以後的不能删除掉 03/25 18:53
5F:→ kakar0to: 我可能要修改一下内文 03/25 18:54
※ 编辑: kakar0to (111.251.229.11 台湾), 03/25/2024 18:55:30
6F:→ wuyiulin: 你确定你用的是 thread?Python有 GIL 03/25 18:58
7F:→ wuyiulin: 然後对,你应该用 queue 然後在 thread B 里面自己写 c 03/25 19:00
8F:→ wuyiulin: ounter 解决读取之类的 03/25 19:00
9F:→ kakar0to: 但其实thread B要删除到哪一笔, 是读取过程中才知道的 03/25 19:13
10F:→ kakar0to: 如果用queue get出来, 如果不能删除, 还需要再放回queue 03/25 19:14
11F:→ kakar0to: 原本的位置这样 03/25 19:14
12F:→ kakar0to: 第90笔是for loop过程中决定的, 在for loop之前是不知道 03/25 19:17
13F:→ kakar0to: 的 03/25 19:17
14F:推 wuyiulin: 有重复元素吗?没有的话宣告一个存tmp检查 当 thread B 03/25 19:22
15F:→ wuyiulin: 触发条件就存,然後进 while 一直删直到这个元素 03/25 19:22
16F:→ wuyiulin: 不然你也可以触发後反向一路删到头 03/25 19:23
17F:→ wuyiulin: 干不对啊是 Python 03/25 19:27
18F:→ wuyiulin: 好 假设你读到第N个触发删除 03/25 19:27
19F:→ wuyiulin: 应该可以 list = list[N:] 这样就好了 03/25 19:28
20F:→ kakar0to: 了解 我感觉我是不是加个mutex就好, 这样好像比较简化 03/25 19:39
21F:→ kakar0to: 问题 03/25 19:39
22F:推 wuyiulin: 加锁是保险,看你有什麽需求怎麽用,因为有锁也有会上 03/25 19:44
23F:→ wuyiulin: 锁跟释放的时间消耗。 03/25 19:44
24F:→ wuyiulin: 我得到的观念最好还是 Lock free 啦,请其他人补充 03/25 19:45
25F:→ kakar0to: 对 我也是不想用mutex 03/25 19:56
26F:→ kakar0to: 那想问wuy大 你知道第一个与第二个问题的答案吗? 03/25 19:57
27F:→ kakar0to: 还是已经回答了 哈 03/25 19:57
28F:→ kakar0to: 不过wuy大有提到GIL, 所以python是不是没有thread这种东 03/25 20:01
29F:→ kakar0to: 西? 我问的问题是不存在的问题? 03/25 20:01
30F:→ kakar0to: 因为我的程式是一个process,然後会提供一个callback 03/25 20:02
31F:→ kakar0to: function给一个外部的module来呼叫, 这个module不是我 03/25 20:02
32F:→ kakar0to: 写的, 所以我不太知道这个module是怎麽样的方式去call 03/25 20:02
33F:→ kakar0to: 这个callback function. 然後callback function里面就是 03/25 20:03
34F:→ kakar0to: append一个data到我的process提供的list里面 03/25 20:03
35F:→ kakar0to: 然後我的process会定期去检查list里面的data, 然後删除 03/25 20:03
36F:→ kakar0to: 前面的部分. 现在我担心同时append以及删除会不会有什麽 03/25 20:04
37F:→ kakar0to: 问题. 03/25 20:04
38F:→ kakar0to: 不过会不会不会同时append与删除, 因为python GIL的限制 03/25 20:05
39F:推 wuyiulin: 会,资料可能会裂开,但是你丢个简单范例跑看看 03/25 23:20
40F:→ wuyiulin: 第一个问题可以,如果你是用索引去拿 list 元素 03/25 23:21
41F:→ wuyiulin: 第二个问题要看你怎麽设计程式 03/25 23:21
42F:→ lycantrope: ... 03/26 09:54







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP