【发布时间】:2020-06-12 09:31:05
【问题描述】:
好家伙!
我阅读了很多关于这个主题的主题,但我无法让它发挥作用。
这是我的示例脚本:
import time, threading, collections
class Factory () :
def __init__(self):
self.to_do_list = collections.deque()
def run(self):
while self.to_do_list :
new_task = self.to_do_list.popleft()
new_task.start(self.done_callback)
def add_worker(self, task):
self.to_do_list.append(task)
def done_callback(self):
print("OK - DONE")
class Worker (threading.Thread):
def __init__(self, _name):
threading.Thread.__init__(self)
self.name = _name
def run(self, _callback):
self.callback = _callback
for i in range (0,5):
print(self.name+" -- "+str(i))
time.sleep(0.5)
self.callback()
worker_1 = Worker("Anakin")
worker_2 = Worker("Obi-Wan")
worker_3 = Worker("Yoda")
factory = Factory()
factory.add_worker(worker_1)
factory.add_worker(worker_2)
factory.add_worker(worker_3)
factory.run()
当我使用 run(self.done_callback) 运行我的 Workers 时,它运行良好,但我失去了多线程效果。
如果我使用 start(self.done_callback) 运行它,我将面临以下错误消息:TypeError: start() takes 1 positional argument but 2 were given
你能解释一下我做错了什么吗?
提前感谢您的宝贵时间!
【问题讨论】:
标签: python multithreading class object