线程纳入课堂

时间:2014-04-14 23:39:56

标签: python class recursion python-multithreading

我正在尝试在我的一个类功能中使用线程。该类不继承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()

1 个答案:

答案 0 :(得分:1)

当我尝试运行时,它给了我错误

CallBackup() argument after * must be a sequence, not int

Why do I get TypeError in Threading in Python解释了同样的问题,您需要将args=(percent)替换为args=(percent,),以使参数列表成为序列而不是元组。