首页 > 解决方案 > 如何在 python 中实现具有时间约束的多处理

问题描述

我有两个需要使用调度程序并行运行的功能。我实现了多处理,但一个进程阻塞了另一个进程。如何实现这样的功能,假设一个函数每 5 分钟运行一次并执行一些任务,而其他函数也每 2 分钟执行一次任务?这两个功能是不同的。

我已经使用调度程序来运行这两个功能。但它会阻止其他功能,直到它完成。

例如:

    def count1():
         now = datetime.now()
         start_time = now.strftime("%H:%M:%S")
         time.sleep(5)
         datetime.now()
         end_time = now.strftime("%H:%M:%S")

    def count2():
         now = datetime.now()
         start_time = now.strftime("%H:%M:%S")
         time.sleep(5)
         datetime.now()
         end_time = now.strftime("%H:%M:%S")

    if __name__ == '__main__':
        schedule.every(5).seconds.do(count1)
        schedule.every(15).seconds.do(count2)
        while True:
            # Checks whether a scheduled task
            # is pending to run or not
            schedule.run_pending()
            time.sleep(1)

我想并行运行这两个函数而不会相互阻塞。我如何实现这一目标?

标签: pythonmultiprocessing

解决方案


我假设您正在使用schedule包,在其文档的第一段中将其描述为进程内调度程序- 换句话说,它不会为您提供并行性。该文档还包括有关并行运行作业的常见问题解答条目。

底线:如果你想要并行性,你需要设置你自己的线程或进程,或者找到一个不同的调度包来做这些事情。


推荐阅读