在Python中阻止I / O.

时间:2016-12-21 01:36:53

标签: python multithreading

新手Python和多线程。

我读了一些关于什么是阻塞和非阻塞I / O的文章,主要的区别似乎是阻塞I / O只允许任务顺序执行,而非阻塞I / O允许多个要同时执行的任务。

如果是这样的话,阻塞I / O操作(某些Python标准内置函数)如何进行多线程处理?

2 个答案:

答案 0 :(得分:2)

阻止I / O阻止它运行的线程,而不是整个进程。 (至少在这种情况下,在标准PC上)

多线程不受定义影响 - 只有当前线程被阻止。

答案 1 :(得分:1)

全局解释器锁(在cpython中)是一个措施,只有一个活动的python线程同时执行。这是为了避免解释器损坏。

当遇到阻塞操作时,当前线程产生锁定,从而允许其他线程在第一个线程被阻塞时执行。但是,当CPU绑定线程(当进行纯粹的python调用时),无论运行多少线程,都只执行一个线程

值得注意的是,在python 3.2中,添加了代码以减轻全局解释器锁的影响。值得注意的是,python的其他实现没有全局解释器锁