python - 如何在 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)
我想并行运行这两个函数而不会相互阻塞。我如何实现这一目标?
解决方案
我假设您正在使用schedule包,在其文档的第一段中将其描述为进程内调度程序- 换句话说,它不会为您提供并行性。该文档还包括有关并行运行作业的常见问题解答条目。
底线:如果你想要并行性,你需要设置你自己的线程或进程,或者找到一个不同的调度包来做这些事情。
推荐阅读
- c# - 重定向到外部 URL 帖子
- python - ValueError:ndarray 不连续
- javascript - jQuery平滑滚动链接颜色更改不起作用
- bitcoin - Coinbase API v2 获得多天的历史价格
- vba - 从已关闭的工作簿中复制数据并粘贴(如果它们的数据相同)
- oauth-2.0 - Linkedin oauth2 api,授权不返回“状态”
- reactjs - this.props.history.push 不重新渲染反应组件
- c# - 使用异步任务和 Textbox.Text = "Hello" 时出现问题
- jmeter - BeanShell 脚本作为后处理器
- android - 在回收站视图中搜索