[英]Python exact time usage
尝试使用每个线程的延迟在不同时间发送多个请求:
def snipe(delay):
print("Exact drop thread opened..")
while True:
if int(round(time.time() * 1000)) == int(droptime - delay):
send = requests.post("www.example.com")
print(f"{time.strftime('[%H:%M:%S]')}Exact: {send}")
break
droptime 变量在 UNIX 时间,例如: 1595359842794
出于某种原因,只有一半的线程实际上发送了请求,而其他线程由于某种原因只是不触发 if 语句。
有人可以建议一种在特定时间以可调节延迟发送请求的更好方法。
正如@kindall 所说,在while
循环中“什么都不做”是一种不好的做法,它一直在消耗CPU。 在这种情况下,使用time.sleep
通常会更好(尽管有更好的和更复杂的选项,例如导致优雅解决方案的异步方法)。 不过,在您的情况下,我不确定您到底想要实现什么,但是如果您尝试发送请求而不相互阻塞,那么以下应该可以工作:
def snipe(delay):
print("Exact drop thread opened..")
send = requests.post("www.google.com")
print(f"{time.strftime('[%H:%M:%S]')}Exact: {send}")
threads = []
for i in range(5):
t = mt.Thread(target=snipe, args=(i,))
threads.append(t)
t.start()
基本上,您不需要控制这些请求的阻塞/解除阻塞性质,因为这是一项 I/O 绑定工作(不需要太多 cpu,这是 GIL 的一个限制,但绝对不适用于这种规模的任务),将由操作系统处理,并且在大多数情况下以最佳方式处理。
如果您具体了解时间延迟/时间戳(这里似乎不合理),那么您可以看看这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.