我正在编写一个程序,其中包含计时字典(以及其他信息),但关键是我需要为每个条目创建一个单独的线程,当线程运行时,执行简单的一行命令,然后为分配的时间(从字典传递)睡眠,然后重新运行。下面是我想要实现的一个例子:
#!/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循环似乎只是为字典中的第一个值创建一个线程。我有一个问题,让所有的线程以正确的时间运行
标题>这给了你预期的输出(我认为,纠正我,如果我错了):
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()
不要忘记在创建线程后启动它:
new_worker_thread = worker(values).start()