我正在嘗試創建執行緒來運行類方法。但是,當我嘗試將一個類傳遞給另一個類時,它會嘗試初始化該類并且永遠不會被執行緒化。
我正在獲取一個元組串列并嘗試將該串列cfThread以及我想要使用的類方法傳遞給該類。從這里開始,我想創建一個單獨的執行緒來運行類方法并對串列中的一個元組采取行動。TheREPLACEME是一個占位符,因為該類正在尋找一個元組,但我還沒有一個可以傳遞給它。我的最終目標是能夠將目標(類/函式)傳遞給可以創建自己的佇列并管理執行緒而無需手動執行的執行緒類。
下面是一個簡單的例子,希望能更好地解釋我想要做什么。
#!/bin/python3.10
import concurrent.futures
class math:
def __init__(self, num) -> None:
self.num = num
def add(self):
return self.num[0] self.num[1]
def sub(self):
return self.num[0] - self.num[1]
def mult(self):
return self.num[0] * self.num[1]
class cfThread:
def __init__(self, target, args):
self.target = target
self.args = args
def run(self):
results = []
with concurrent.futures.ThreadPoolExecutor(10) as execute:
threads = []
for num in self.args:
result = execute.submit(self.target, num)
threads.append(result)
for result in concurrent.futures.as_completed(threads):
results.append(result)
return results
if __name__ == '__main__':
numbers = [(1,2),(3,4),(5,6)]
results = cfThread(target=math(REPLACEME).add(), args=numbers).run()
print(results)
uj5u.com熱心網友回復:
target必須是可呼叫的;您想將呼叫包裝add在一個lambda運算式中。
results = cfThread(target=lambda x: math(x).add(), args=numbers)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523049.html
標籤:Pythonpython-3.x班级python-多线程蟒蛇类
