簡體   English   中英

此代碼與 python 線程模塊是否安全?

[英]Is this code safe with python threading module?

my.txt 文件是否總是包含 100 行? 此代碼是否保證沒有數據丟失?

import threading
import os

class Worker(threading.Thread):
    def __init__(self, name):
        super().__init__()
        self.name = name            

    def run(self):
        os.system("echo {} >> my.txt".format(self.name))

for i in range(100):
    name = "thread {}".format(i)
    t = Worker(name)                
    t.start()                       

您正在使用>>進行 shell 重定向。 這將以 append 模式打開文件,並且操作系統保證在該模式下所有數據都寫入文件末尾,因此不會丟失任何數據。 然而,當寫入大量數據時,來自不同來源的行可能會以不可預知的方式混合在一起。

並不是真的需要為您編寫的每一行啟動一個新的 shell。 您可以使用with open("my.txt", "a") as f: ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM