特定时间线程

时间:2015-05-21 13:53:41

标签: python linux multithreading dictionary

我正在编写一个包含时序字典的程序(以及其他信息),但关键是我需要为每个条目创建一个单独的线程,当线程运行时,做一个简单的行命令然后休眠一段时间(从字典传递),然后重新运行。以下是我试图实现的一个例子:

#!/usr/bin/python

import threading
import time


class worker(threading.Thread):

    def __init__(self,timer):
        while True:
            print("job %s" % timer)
            time.sleep(timer/100)

if __name__ == "__main__":

    mydict = {1:150, 2:250, 3:350}

    for values in mydict.keys():
        new_worker_thread = worker(values)

字典中的每个值表示一个时间(以毫秒为单位),这需要传递给线程,然后运行直到停止。

任何帮助都将不胜感激。

由于 吉姆

修改

对不起,这可能不太清楚。

我正在使用的for循环似乎只为字典中的第一个值创建一个线程。我在使用正确的时间运行所有线程时遇到问题

2 个答案:

答案 0 :(得分:1)

这会给你预期的输出(我想,如果我错了,请纠正我):

class worker(threading.Thread):

    def __init__(self, timer):
        self.timer = timer
        super(worker, self).__init__()

    def run(self):
        while True:
            print("job %s" % self.timer)
            time.sleep(10)

if __name__ == "__main__":

    mydict = {1:150, 2:250, 3:350}

    for values in mydict.keys():
        print(values)
        new_worker_thread = worker(values)
        new_worker_thread.start()

答案 1 :(得分:0)

创建后不要忘记启动线程:

new_worker_thread = worker(values).start()