Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在其他线程中设置参数_Python_Multithreading - Fatal编程技术网

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