gpt4 book ai didi

python - 使用 Python 多处理以固定速率安排任务

转载 作者:行者123 更新时间:2023-11-28 19:14:49 26 4
gpt4 key购买 nike

我想在 Python 中异步运行一个函数,以固定的时间间隔重复调用该函数。 This java 类具有类似于我想要的功能。我希望在 python 中得到类似的东西:

pool = multiprocessing.Pool()
pool.schedule(func, args, period)
# other code to do while that runs in the background
pool.close()
pool.join()

是否有提供类似功能的软件包?我更喜欢简单轻便的东西。

如何在 python 中实现此功能?

post是相似的,但要求一个过程中的解决方案。我想要一个多进程异步解决方案。

最佳答案

这是一种可能的解决方案。一个警告是 func 需要比 rate 更快地返回,否则它不会像 rate 那样频繁地被调用,如果它变得更快,它会在 catch 时比 rate 更快地被调度。这种方法看起来工作量很大,但并行编程通常也很困难。我希望再次查看代码以确保我没有在某处等待死锁。

import multiprocessing, time, math


def func():
print('hello its now {}'.format(time.time()))


def wrapper(f, period, event):
last = time.time() - period
while True:
now = time.time()

# returns True if event is set, otherwise False after timeout
if event.wait(timeout=(last + period - now)):
break
else:
f()
last += period


def main():
period = 2
# event is the poison pill, setting it breaks the infinite loop in wrapper
event = multiprocessing.Event()
process = multiprocessing.Process(target=wrapper, args=(func, period, event))
process.start()

# burn some cpu cycles, takes about 20 seconds on my machine
x = 7
for i in range(50000000):
x = math.sqrt(x**2)

event.set()
process.join()
print('x is {} by the way'.format(x))

if __name__ == '__main__':
main()

关于python - 使用 Python 多处理以固定速率安排任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com