我正在尝试在我的一个类功能中使用线程。该类不继承Thread类,它只是在使用它,在类中调用一个函数。代码已经改进了我班级的问题。
出现的问题似乎是在类中使用线程并递归调用方法的实现?这只是我的猜测,我不是蟒蛇计划的专家,所以我不知道。
import threading
class Alpha:
# Set variable defaults
leader = 'Swansonburg'
# - Thread variables
MAX_CONNECTIONS = 5
lock = threading.BoundedSemaphore(value=MAX_CONNECTIONS)
def __init__(self, leader=''):
if (leader): self.leader = leader
def run(self):
print "[+] Alpha: %s, Calling For Backup!" % self.leader
self.ETA = 101
for percent in range(self.ETA):
""" SET TRUE TO ENABLE THREADING """
THREADING = False
self.lock.acquire() # Set thread cap
if (not THREADING):
self.CallBackup(percent)
else:
t = threading.Thread(target=self.CallBackup, args=(percent))
t.start()
def CallBackup(self, percent):
if (percent == 0): pass
elif (percent % 10 == 0) | (percent == 100):
output = ("=" * percent) + (" %% - %d" % percent)
print (output)
self.lock.release()
def main():
new_team = Alpha()
new_team.run()
if (__name__ == '__main__'):
main()
答案 0 :(得分:1)
当我尝试运行时,它给了我错误
CallBackup() argument after * must be a sequence, not int
Why do I get TypeError in Threading in Python解释了同样的问题,您需要将args=(percent)
替换为args=(percent,)
,以使参数列表成为序列而不是元组。