- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个主线程启动多个守护线程来监听文件系统事件。我需要让主线程保持事件状态。为此,我可以使用 while 循环,或将其“死锁”。在性能方面哪个更好?
while True:
time.sleep(1)
或
from threading import Event
Event().wait()
在这两种情况下,我都可以使用 ctrl+c 中断主线程。
编辑:或者有更好的方法吗?
最佳答案
使用time.sleep(delay)
,您必须等到 sleep 时间结束才能响应事件,因此代码的响应能力取决于延迟时间。使用 Event().wait()
事件管理时,您的应用程序的响应速度应该更快,因为它会立即响应外部刺激,而无需等待延迟结束。然而,另一方面,这也意味着托管广告必须比将在延迟时间内释放 GIL 的 time.sleep(delay)
更频繁地获取/释放 GIL。 这对性能有何影响?
根据应用程序的类型,如果您有很多事件线程,您可能会发现一些细微差别。这个问题在 Python 2x 或更早版本中尤为明显,在 Python 3x 中,这些函数在低级别上变得贫乏,问题就不那么明显了。
如果您有兴趣了解有关该主题的更多信息,here您将找到使用 python3 获取锁的函数的 C 实现。
我希望我已经完整地回答了你的问题。
关于python - 死锁主线程而不是忙等待更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58054087/
根据https://developers.google.com/google-apps/calendar/v3/reference/freebusy/query处的文档要执行空闲/忙碌查询,您必须在正
我在启动 Apache 后使用 XAMPP 1.7.7 我收到此警报: Busy... Apache started [Port 80] 我已经打开了 httpd.conf 文件,并将端口号更改为 8
我有端口问题。 每当我启动 Apache 时,它都会给我这个错误: Busy - Apache Started [port 80] 当我启动 Mysql 时出现以下错误: Busy - ERROR
当我运行我的代码时,我总是得到后台工作人员很忙。有帮助吗? struct FtpSetting { public string Server { get; set
在我们的 Android 和 iOS MVVMCross 应用程序中,我们偶尔会遇到 SQLiteException: busy 异常。 给定下面的代码,我们有几个存储库,每个存储库都构造一个下面的实
每次运行解决方案(20 projs)时,我都会收到此错误。我尝试禁用 UI 选项、resharper、删除未使用的扩展等,但仍然无法通过此错误。 我使用的是 VS 2015 Update 2 Ente
我正在使用这个插件 https://github.com/mozilla/rust-android-gradle ,这需要我添加 tasks.whenTaskAdded { task -> i
我是一名优秀的程序员,十分优秀!