您沒有指定在哪個平臺下運行(當您用multiprocessing標記問題時,您應該用自己的平臺標記問題),但似乎您在使用spawn創建新進程的平臺(如Windows)下運行。這意味著當啟動一個新進程時,將創建一個空的地址空間,啟動一個新的Python解釋器,并且源代碼位于頂部的re-executed。 因此,盡管在if __name__ == '__main__':開頭的塊中為shared_list分配了一個托管列表,但池中創建的每個進程都將執行shared_list = []以結束初始分配。 可以將shared_list作為第一個參數傳遞給worker函數: import timefrom tqdm.contrib.concurrent import process_mapfrom multiprocessing import Managerfrom functools import partialdef worker(shared_list, i): time.sleep(1) shared_list.append(i)if __name__ == '__main__': manager = Manager() shared_list = manager.list() process_map(partial(worker, shared_list), range(20), ma