Python 在其他线程中设置参数
所以我有一个线索:Python 在其他线程中设置参数,python,multithreading,Python,Multithreading,所以我有一个线索: import threading, time, serial, logging class SerialThread(threading.Thread): # SerialThread class construcor def __init__(self, sleep): self.sleep = sleep threading.Thread.__init__(self,name = "SerialThread")
import threading, time, serial, logging
class SerialThread(threading.Thread):
# SerialThread class construcor
def __init__(self, sleep):
self.sleep = sleep
threading.Thread.__init__(self,name = "SerialThread")
self.setDaemon(1)
# SerialThread method
def run(self):
# Do forever
while 1:
# Sleep afther every loop
time.sleep(self.sleep)
print 'Doing some work!'
def setSleep(self, sleep):
self.sleep = sleep
然后在我的主线程中,我会:
serialThread = SerialThread(60)
serialThread.start()
def changeSleep():
serialThread.setSleep(80)
我从我的主代码开始这个线程。但是现在,当我想更改self.sleep号码时,我应该怎么做?我尝试过这个简单而天真的解决方案,只在thread类中创建一个方法,当它被调用时,它会设置睡眠时间。显然,这并不像我预期的那样有效。
我们欢迎一个好的例子
编辑:添加了我以前尝试过的代码
编辑:所以它不会像self那样工作。睡眠始终是60,因为我在开始时设置它,即使在调用serialThread.setSleep(80)
编辑:我不认为这有什么关系,但我正在用flash和serialThread创建web服务。通过访问flash路由调用setSleep(80)
。所以我猜flask也在单独的线程上运行,因为serialThread.setSleep(80)
实际上不是从主线程调用的
代码:
我使用以下主体代码(以及线程代码中的有用打印):
输出:
sleeping for 3
Doing some work!
sleeping for 3
Doing some work!
sleeping for 3
Doing some work!
sleeping for 3
Doing some work!
sleeping for 3
Doing some work!
sleeping for 6
Doing some work!
sleeping for 6
Doing some work!
sleeping for 6
你能给出你用来尝试你的方法的代码吗。您描述的方法应该可以工作。@Xero:添加了我以前尝试过的代码,以什么方式“不工作”?@Russellborogve:用“不工作”编辑帖子这很奇怪,同样的代码对我有效。我希望您实际上是在调用changeSleep()函数,而不仅仅是定义它。
serialThread = SerialThread(3)
serialThread.start()
def changeSleep():
serialThread.setSleep(6)
time.sleep(15)
changeSleep()
time.sleep(15)
sleeping for 3
Doing some work!
sleeping for 3
Doing some work!
sleeping for 3
Doing some work!
sleeping for 3
Doing some work!
sleeping for 3
Doing some work!
sleeping for 6
Doing some work!
sleeping for 6
Doing some work!
sleeping for 6