1
50
它不是线程安全的;同时调用可能会交错,并与局部变量混淆。 常用的方法是使用主从模式(在PC中现在称为农工模式)。创建第三个线程来生成数据,并在主线程和从线程之间添加一个队列,从线程将从该队列中读取数据,主线程将写入该队列。标准队列模块提供必要的线程安全性,并安排阻塞主队列,直到从队列准备好读取更多数据。 |
2
42
编辑以在下面添加基准。 你可以用锁把发电机包起来。例如,
锁定在我的系统上需要50毫秒,队列需要350毫秒。当您确实有队列时,队列很有用;例如,如果您有传入的HTTP请求,并且您希望将它们排队以供工作线程处理。(这不适用于python迭代器模型——一旦迭代器用完了项,它就完成了。)如果确实有迭代器,那么lockeditor是一种更快、更简单的方法来保证它的线程安全。
|
3
5
不,它们不是线程安全的。您可以在以下位置找到有关生成器和多线程的有趣信息: |
4
-11
这取决于您使用的是哪种Python实现。在cpython中,gil对python对象执行所有操作都是线程安全的,因为在任何给定的时间只有一个线程可以执行代码。 |
Mayka · 通过带条件的生成器表达式指定两个变量? 6 年前 |
Bram Vanroy · 在列表之间获取唯一的产品并维护输入顺序 6 年前 |
David Trinh · js生成器存在异步问题,并承诺不会返回结果 6 年前 |