試圖由不同的threads同時讀寫同一個文件通常是一個非常糟糕的主意,尤其是如果您也在查找和截斷該文件。除非使用Lock來序列化訪問,否則無法確定哪些數據是按什么順序讀/寫的。 為了保持簡單,我建議讓主程序將輸入文件讀取到列表中。給每個thead一份清單,讓其采取行動。 讀取用戶列表的示例: # Read file into list:with open("users.txt") as uf: users = [ln.strip() for ln in tf if ln[0] not in '\r\n'] 讓我們將此代碼(稱為列表理解)分解為: for ln in tf 迭代文件中的行。 if ln[0] not in '\r\n' 這將跳過空行。 ln.strip() 這將刪除換行符和回車符等。 請注意,with-語句完成后,uf是一個關閉的文件,因此您無法再從中讀取。 為threads創建要迭代的對 假設numusers(即len(users))是34。 numusers = 34 然后,我們可以創建一個如下所示的配對列表: im = [n for n in range(numusers+1) if n % 10 == 0 or n == numusers] 這將生成列表[0, 10, 20, 30, 34] 現在創建配對: pairs = list(zip(im[:-1],