【问题标题】:Controlling Thread Execution Time in Python在 Python 中控制线程执行时间
【发布时间】:2013-06-03 13:36:39
【问题描述】:

是否可以控制python中线程的比例执行时间。例如,我的程序中有三个函数 F1、F2 和 F3。我在 python 中使用 start_new_thread 调用每个函数。我希望 F2 线程执行 70% 的时间,而 F1 和 F3 应该共享其余的 30%。有没有办法明确控制这些时间。

【问题讨论】:

  • 这里的动机是什么?你为什么要这样做,它需要有多精确?
  • 这是一些非常低级的东西,通常由操作系统处理。我怀疑是否有一种方法可以根据需要精确控制它,但可能有一种方法可以以特定优先级启动线程。
  • 实际上我正在尝试并行化其他人编写的代码。我想在对原始代码进行最小更改的同时使用此功能 (F2)。问题是,如果我只调用 F2 而不为其创建线程,则执行时间太长。我想为此函数创建线程,同时分配最大调度时间以尽快完成 F2 执行,同时在 F2 调用期间不挂起我的程序。
  • Python 线程是真正的 OS 线程。所有的调度都留给操作系统。实现您想要的唯一方法是重新实现调度。在这种情况下,您应该向函数添加检查,并在经过一定时间后让线程休眠。做一些行之有效的事情并不容易,而且结果可能不是最理想的。请注意,操作系统通常会为交互式程序提供非常高的优先级,因此出于您所说的原因(至少如果您没有实际测试它在没有自定义调度程序的情况下如何运行),则不需要这样做。

标签: python multithreading timing


【解决方案1】:

您可以使用优先级队列和时间片创建调度程序。不确定 Python 中的具体细节,但概念是相同的:创建一个接受线程的调度程序类,将线程添加到具有给定优先级的优先级队列中,然后在指定的时间段过去后使线程休眠。您可以根据当前线程的优先级调整时间片。

这类似于操作系统如何调度进程线程。

【讨论】:

  • 阿汉。谢谢!。这是一个很好的前进方向。优先处理线程。让我探索一下这在 Python 中的灵活性。
  • 没问题,希望对您有帮助!
猜你喜欢
  • 2020-01-08
  • 1970-01-01
  • 2015-11-22
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多