→ lycantrope: 為什麼不用queue 03/25 18:34
→ kakar0to: 好像是queue比較符合我想要的功能 03/25 18:51
→ kakar0to: 不過queue能夠peek嗎? 因為其實thread B可能只需要第一 03/25 18:53
→ kakar0to: 筆到第90筆data這樣, 91以後的不能刪除掉 03/25 18:53
→ kakar0to: 我可能要修改一下內文 03/25 18:54
※ 編輯: kakar0to (111.251.229.11 臺灣), 03/25/2024 18:55:30
→ wuyiulin: 你確定你用的是 thread?Python有 GIL 03/25 18:58
→ wuyiulin: 然後對,你應該用 queue 然後在 thread B 裡面自己寫 c 03/25 19:00
→ wuyiulin: ounter 解決讀取之類的 03/25 19:00
→ kakar0to: 但其實thread B要刪除到哪一筆, 是讀取過程中才知道的 03/25 19:13
→ kakar0to: 如果用queue get出來, 如果不能刪除, 還需要再放回queue 03/25 19:14
→ kakar0to: 原本的位置這樣 03/25 19:14
→ kakar0to: 第90筆是for loop過程中決定的, 在for loop之前是不知道 03/25 19:17
→ kakar0to: 的 03/25 19:17
推 wuyiulin: 有重複元素嗎?沒有的話宣告一個存tmp檢查 當 thread B 03/25 19:22
→ wuyiulin: 觸發條件就存,然後進 while 一直刪直到這個元素 03/25 19:22
→ wuyiulin: 不然你也可以觸發後反向一路刪到頭 03/25 19:23
→ wuyiulin: 幹不對啊是 Python 03/25 19:27
→ wuyiulin: 好 假設你讀到第N個觸發刪除 03/25 19:27
→ wuyiulin: 應該可以 list = list[N:] 這樣就好了 03/25 19:28
→ kakar0to: 了解 我感覺我是不是加個mutex就好, 這樣好像比較簡化 03/25 19:39
→ kakar0to: 問題 03/25 19:39
推 wuyiulin: 加鎖是保險,看你有什麼需求怎麼用,因為有鎖也有會上 03/25 19:44
→ wuyiulin: 鎖跟釋放的時間消耗。 03/25 19:44
→ wuyiulin: 我得到的觀念最好還是 Lock free 啦,請其他人補充 03/25 19:45
→ kakar0to: 對 我也是不想用mutex 03/25 19:56
→ kakar0to: 那想問wuy大 你知道第一個與第二個問題的答案嗎? 03/25 19:57
→ kakar0to: 還是已經回答了 哈 03/25 19:57
→ kakar0to: 不過wuy大有提到GIL, 所以python是不是沒有thread這種東 03/25 20:01
→ kakar0to: 西? 我問的問題是不存在的問題? 03/25 20:01
→ kakar0to: 因為我的程式是一個process,然後會提供一個callback 03/25 20:02
→ kakar0to: function給一個外部的module來呼叫, 這個module不是我 03/25 20:02
→ kakar0to: 寫的, 所以我不太知道這個module是怎麼樣的方式去call 03/25 20:02
→ kakar0to: 這個callback function. 然後callback function裡面就是 03/25 20:03
→ kakar0to: append一個data到我的process提供的list裡面 03/25 20:03
→ kakar0to: 然後我的process會定期去檢查list裡面的data, 然後刪除 03/25 20:03
→ kakar0to: 前面的部分. 現在我擔心同時append以及刪除會不會有什麼 03/25 20:04
→ kakar0to: 問題. 03/25 20:04
→ kakar0to: 不過會不會不會同時append與刪除, 因為python GIL的限制 03/25 20:05
推 wuyiulin: 會,資料可能會裂開,但是你丟個簡單範例跑看看 03/25 23:20
→ wuyiulin: 第一個問題可以,如果你是用索引去拿 list 元素 03/25 23:21
→ wuyiulin: 第二個問題要看你怎麼設計程式 03/25 23:21
→ lycantrope: ... 03/26 09:54