python - Tensorflow 的 QueueBase.enqueue_many 是否保留跨线程的顺序?

标签 python multithreading queue tensorflow

假设两个线程同时尝试将 N 个张量放入 FIFOQueue 的实例中。也就是说,他们在打电话

queue_instance.enqueue_many(T) 其中 T 是长度为 N 的张量列表。

让我们将第一个线程中的每个张量标记为 T1_1T1_N,以及 T2_1T2_N第二个线程。当一切都说完了(对 enqueue_many 的调用都已完成),顺序会被保留吗?即,队列是否包含 [T1_1, ..., T1_N, T2_1, ..., T2_N][T2_1, ..., T2_N, T1_1, ..., T1_N]?或者张量可以以交错方式入队,即 [T2_1, T2_2, T1_1, T2_3, T1_2, ...]?或者,我想,第三种选择是没有任何规律或理由:张量以任意顺序排队。

最佳答案

保留每个线程排队的批处理中的顺序。另一种表达方式是 FIFOQueue.enqueue_many()相对于同一队列上的其他入队操作以原子方式*执行。


* 但是,如果队列的剩余容量小于正在排队的批处理的大小,则可以在排队完成之前从批处理中出队元素——即您可以将比队列容量的批处理入队,并且入队操作将阻塞,直到有足够的元素出队。

关于python - Tensorflow 的 QueueBase.enqueue_many 是否保留跨线程的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319947/

相关文章:

c++ - 将整数放入队列 <char> C++

python - 如何使用 pandas 中其他列的 .size() 值创建新列?

python - PIL ImageGrab 在 Python 中捕获选定的窗口

c# - 在 C# 中克隆队列

c - 用户输入的队列大小

java - 如何从线程返回值

python - fortran 库的 python 结构内部和外部 c_char 数组之间的区别

python - "RelationRecord object of apyori module"先验算法python

java - AsyncTask、Handler、Thread……选哪个

multithreading - 多线程 FastCGI 应用程序