0

FOR ループの実行中にスレッドをテストするための小さなコードを作成し、別のクラスで別の関数を実行しています。

このコードは非常にうまく機能しますが、スレッドを 10 秒以上にしたい場合は、IDLE で次のエラーが発生します。

Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python33\lib\threading.py", line 637, in _bootstrap_inner
self.run()
File "C:\Python33\lib\threading.py", line 594, in run
self._target(*self._args, **self._kwargs)
TypeError: main() takes 2 positional arguments but 3 were given

threading.py モジュールの問題のようですが、きっと解決策があるはずです。

以下は私が持っているコードです:

import threading, time

class Application:
    def __init__(self):       
        self.main()

    def main(self)        
        global count
        count = int(input("How many seconds do you want it to Thread?\n"))
        if count:
            thread = Threading(count)
        else:
            pass

    def test(self):
        print("Printing in another class.", self)


class Threading:
    def __init__(self, y):
        print("Starting Thread...")
        number = str(count)
        thread = threading.Thread(target=self.main, args=number)
        thread.start()
        for i in range(count):          
            print("Looping...", i)
            time.sleep(1)

    def main(self, argument):
        while (int(argument)>0):
            print("Threading...", argument)
            argument = int(argument) - 1
            Application.test(argument)
            time.sleep(1)

if __name__ == '__main__':
    app = Application()

strコード内のand部分を変更するとint、引数はシーケンスでなければならないため、スレッドはまったく実行されません。 私の質問は、コードを 10 秒以上実行できるようにするにはどうすればよいかということです。

4

1 に答える 1

1

それを自分で考え出した!引数はタプルである必要があったため、元のマルチスレッド行を次のように変更しました。

 thread = threading.Thread(target=self.main, args=(number,))

ただの前にargs=number

于 2013-06-12T14:28:52.697 に答える