Python 安排线程
Python Schedule Threads
我有 3 个线程,t1
、t2
和 t3
我想每 N 分钟启动一个线程,例如
t1 should start randomly each [2, 4] min
t2 should start randomly each [10, 15] min
t3 should start randomly each [6, 9] min
这是我目前所拥有的
def attack(number, driver, sleep_time):
# Do stuff here
sleep(randint(sleep_time[0], sleep_time[1]) * 60)
return attack(number, driver, sleep_time)
if __name__ == '__main__':
t1 = threading.Thread(target=attack, args=(1, driver, [2, 4]))
t2 = threading.Thread(target=attack, args=(2, driver, [10, 15]))
t3 = threading.Thread(target=attack, args=(3, driver, [6, 9]))
t1.start()
t2.start()
t3.start()
我对早期没有问题,我的问题是长期(10 - 20 分钟)
我不能让 t2
或 t3
工作 当 t1
正在执行实际操作时(不是睡眠持续时间)
所以,我不能使用 join
,因为我必须等待睡眠时间。
如果我从 attack
函数中删除睡眠持续时间,我不知道如何让 random
参与进来。
问题:
有没有比在 attack
函数中设置睡眠持续时间更好的方法?
有没有办法告诉其他线程,“正在执行操作等我去睡觉”
我只想启动与同一元素交互的所有线程,但不要同时工作。
任何想法、建议或 link 将不胜感激。
Is there a better way...?
是的。将“线程”的概念与线程所做的工作分开。如果您不希望有多个线程“在这里做事”,那么就没有理由拥有多个线程。
一个线程可以;
- 为三个活动中的每一个选择初始 due-dates,
- 找出下一个到期的 activity(即找到 due-dates 的 min()),然后 sleep() 直到那个到期,
- 执行 activity、
- 为刚刚完成的 activity 添加适当的 random() 时间到 due-date,
- 然后返回到第 2 步。
我有 3 个线程,t1
、t2
和 t3
我想每 N 分钟启动一个线程,例如
t1 should start randomly each [2, 4] min
t2 should start randomly each [10, 15] min
t3 should start randomly each [6, 9] min
这是我目前所拥有的
def attack(number, driver, sleep_time):
# Do stuff here
sleep(randint(sleep_time[0], sleep_time[1]) * 60)
return attack(number, driver, sleep_time)
if __name__ == '__main__':
t1 = threading.Thread(target=attack, args=(1, driver, [2, 4]))
t2 = threading.Thread(target=attack, args=(2, driver, [10, 15]))
t3 = threading.Thread(target=attack, args=(3, driver, [6, 9]))
t1.start()
t2.start()
t3.start()
我对早期没有问题,我的问题是长期(10 - 20 分钟)
我不能让 t2
或 t3
工作 当 t1
正在执行实际操作时(不是睡眠持续时间)
所以,我不能使用 join
,因为我必须等待睡眠时间。
如果我从 attack
函数中删除睡眠持续时间,我不知道如何让 random
参与进来。
问题:
有没有比在 attack
函数中设置睡眠持续时间更好的方法?
有没有办法告诉其他线程,“正在执行操作等我去睡觉”
我只想启动与同一元素交互的所有线程,但不要同时工作。
任何想法、建议或 link 将不胜感激。
Is there a better way...?
是的。将“线程”的概念与线程所做的工作分开。如果您不希望有多个线程“在这里做事”,那么就没有理由拥有多个线程。
一个线程可以;
- 为三个活动中的每一个选择初始 due-dates,
- 找出下一个到期的 activity(即找到 due-dates 的 min()),然后 sleep() 直到那个到期,
- 执行 activity、
- 为刚刚完成的 activity 添加适当的 random() 时间到 due-date,
- 然后返回到第 2 步。