我是 Python 新手,一直在嘗試使用多線程。關于該主題的Stackoverflow已經存在深入的評論,但我仍然有一些問題。我的程序的目標是創建和填充一個數組(盡管我猜從技術上講它在 Python 中必須稱為“列表”)并通過“分而治之”算法對其進行排序。不幸的是,術語“列表”和“數組”似乎被許多用戶混為一談,即使它們并不相同。如果在我的評論中使用了“數組”,請記住,我已經發布了來自各種資源的不同代碼,并且為了尊重原作者,沒有更改其內容。我用于填充列表的代碼count非常簡單#!/usr/bin/env python3count = []i = 149while i >= 0: count.append(i) print(i) i -= 1之后,我使用這個關于“分而治之”主題的非常方便的指南來創建兩個列表進行排序,稍后將它們合并。我現在主要關心的是如何通過多線程正確使用這些列表。在前面提到的帖子中,有人認為,基本上,使用多線程只需要幾行代碼:from multiprocessing.dummy import Pool as ThreadPool pool = ThreadPool(4)也results = pool.starmap(function, zip(list_a, list_b))傳遞多個列表。我試圖調整代碼但失敗了。我的函數的參數是def merge(count, l, m, r)(用于將列表count分成左右部分),兩個臨時創建的列表被稱為L和R。def merge(arr, l, m, r): n1 = m - l + 1 n2 = r- m # create temp arrays L = [0] * (n1) R = [0] * (n2) 但是每次我運行該程序時,它只會響應以下錯誤消息:Traceback (most recent call last): File "./DaCcountdownTEST.py", line 71, in <module> results = pool.starmap(merge,zip(L,R))NameError: name 'L' is not defined我不知道我的問題的原因。任何幫助是極大的贊賞!
添加回答
舉報
0/150
提交
取消