新手Python和多线程。
我读了一些关于什么是阻塞和非阻塞I / O的文章,主要的区别似乎是阻塞I / O只允许任务顺序执行,而非阻塞I / O允许多个要同时执行的任务。
如果是这样的话,阻塞I / O操作(某些Python标准内置函数)如何进行多线程处理?
答案 0 :(得分:2)
阻止I / O阻止它运行的线程,而不是整个进程。 (至少在这种情况下,在标准PC上)
多线程不受定义影响 - 只有当前线程被阻止。
答案 1 :(得分:1)
全局解释器锁(在cpython中)是一个措施,只有一个活动的python线程同时执行。这是为了避免解释器损坏。
当遇到阻塞操作时,当前线程产生锁定,从而允许其他线程在第一个线程被阻塞时执行。但是,当CPU绑定线程(当进行纯粹的python调用时),无论运行多少线程,都只执行一个线程
值得注意的是,在python 3.2中,添加了代码以减轻全局解释器锁的影响。值得注意的是,python的其他实现没有全局解释器锁