<p>我想出了一些可以根据你的需要进行配置的方法</p>
<pre><code>import time
# Assuming your class
class Item:
def __init__(self, name, number_of_ticks_to_act_in, *args, **kawrgs):
self.name = name
self.number_of_ticks_to_act_in = number_of_ticks_to_act_in
def make_request(self):
print(f"Making a requests from {self.name}")
# Item0 and Item1 will post every 2 mins and Item2 every 3 mins.
items = [Item("Item0", 2), Item("Item1", 2), Item("Item2", 3)]
# ?: Your configs
seconds_per_tick = 60 # Every tick can be in every 60 seconds or how you want it.
ticks_passed = 0 # This is a counter to keep track of ticks passed.
max_ticks_item = max(items, key=lambda i: i.number_of_ticks_to_act_in) # The counter gets set back to 0 once the max ticks that you stated have exceeded, this will let you run the code forever and never have to worry about the number surpassing int size. Overkill.
is_condition_met = True # You can set a condition to stop your forever while loop
while is_condition_met:
# The counter is reset if it exceeds your max ticks.
if ticks_passed >= max_ticks_item.number_of_ticks_to_act_in:
ticks_passed = 0
ticks_passed += 1
time.sleep(seconds_per_tick)
# Only Items with the same tick will get executed, this lets you have 2 or more Items of the same tick.
for item in filter(lambda x: ticks_passed % x.number_of_ticks_to_act_in == 0,
items):
item.make_request()
</code></pre>
<p>希望这不是太复杂。添加尽可能多的评论</p>