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/m.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燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP