JoinableQueue.join()块是什么?

时间:2015-03-27 21:10:06

标签: python python-multiprocessing

JoinableQueue的文档说

  

join()阻止,直到获取并处理了队列中的所有项目

我知道当我调用Process.join()Thread.join()时,当前进程或线程的执行将停止,直到我调用的join方法的进程或线程退出。

Process的文档使用与JoinableQueue

相同的语言
  

join([timeout])阻止调用线程,直到调用join()方法的进程终止或发生可选超时为止。

我是否总能理解“阻止”是指暂停调用线程直到满足某些条件?我在文档中找不到任何确认。如果我搜索“块python”,我只能找到有关代码块或上面引用的相同文档的信息。

1 个答案:

答案 0 :(得分:4)

Python的文档正在使用"被阻止" (以及http://en.wikipedia.org/wiki/Process_state的经典意义上的其他形式的相同词干"块") - 任何线程(或过程)都可以"运行"或&#34 ;准备" (但等待CPU),或者#34;阻止" (然后"终止"一旦它完成,基本上完成了。)

(特别是在CPython中,在给定的进程中,只有一个线程可以"运行" Python 代码,无论有多少CPU可用 - 其他的都在抽象意义" ready"实际上在内部被全局解释器锁GIL阻止 - 但是,这是一个实现细节,仅适用于某些实现,而不适用于Python作为语言)。