多线程参数传递

时间:2013-08-22 23:54:15

标签: python multithreading parameters

我有这样的类线程:

import threading, time
class th(threading.Thread):
    def run(self):
        print "Hi"
        time.sleep(5)
        print "Bye"

现在让我说我希望每次“睡觉”都不同,所以我尝试了:

import treading, time
class th(threading.Thread, n):
    def run(self):
        print "Hi"
        time.sleep(n)
        print "Bye"

它不起作用,它给了我一个信息:

  

group参数现在必须为None

那么,如何在运行中传递参数?

注意:我使用类中的另一个函数来完成它:

import treading, time
class th(threading.Thread):
    def run(self):
        print "Hi"
        time.sleep(self.n)
        print "Bye"
    def get_param(self, n):
        self.n = n

var = th()
var.get_param(10)
var.start()

2 个答案:

答案 0 :(得分:3)

尝试此操作 - 您希望将超时值添加到对象,因此您需要该对象将该变量作为其中的一部分。您可以通过添加在创建类时执行的__init__函数来实现。

import threading, time
class th(threading.Thread):
    def __init__(self, n):
        self.n = n
    def run(self):
        print "Hi"
        time.sleep(self.n)
        print "Bye"

查看更多详情here

答案 1 :(得分:1)

class Th(threading.Thread):
    def __init__(self, n):
        super(Th, self).__init__()
        self.n = n
    def run(self):
        print 'Hi'
        time.sleep(self.n)

Th(4).run()

定义构造函数,并将参数传递给构造函数。 class行上的括号分隔父类列表; n是参数,而不是父级。