Python greenthread是如何安排的?

Python greenthread是如何安排的?,python,multithreading,eventlet,greenlets,green-threads,Python,Multithreading,Eventlet,Greenlets,Green Threads,在我的Python程序中,我使用eventlet创建了许多绿色线程,只是想知道当前的绿色线程是否休眠,其余的哪个将被调度并运行?eventlet中有调度程序吗 谢谢 请观看此链接并阅读一般来说,准备好两个绿色线程后,将运行哪个线程是未定义的。每次编写程序时都应该把它当作随机选择 实现细节是,我们有具有FIFO语义的调度程序队列。但等待时间(>0秒)或等待文件描述符(包括网络)会变得更复杂一些 哦,我们这里有官方的Github存储库你能添加你的代码吗?如果哪个greenthread将运行是未定义的

在我的Python程序中,我使用eventlet创建了许多绿色线程,只是想知道当前的绿色线程是否休眠,其余的哪个将被调度并运行?eventlet中有调度程序吗


谢谢

请观看此链接并阅读

一般来说,准备好两个绿色线程后,将运行哪个线程是未定义的。每次编写程序时都应该把它当作随机选择

实现细节是,我们有具有FIFO语义的调度程序队列。但等待时间(>0秒)或等待文件描述符(包括网络)会变得更复杂一些


哦,我们这里有官方的Github存储库

你能添加你的代码吗?如果哪个greenthread将运行是未定义的,那么我认为它与OS线程也会有一些类似的缺点,比如复杂的编程模式,可能导致死锁等。所以我想知道,与OS线程相比,我能从greenthread获得什么好处,只有“轻量级”和更少的切换开销?但使用OS thread,我可以充分利用一个Python程序中的多个CPU核,这是greenthread无法实现的。另一个问题是,当我在greenthread A中调用eventlet.sleep(5)以放弃执行其他greenthreads时,eventlet如何保证greenthread A在5秒后再次调度?@Eric:“我可以在一个Python程序中充分利用多个CPU核-,对不起。@Kevin,谢谢,这些信息非常有用!因此,在Python程序中出现了一个新问题,为什么我们需要多个OS线程?因为在给定的时刻,由于GIL,只有一个OS线程可以运行,所以我不知道为什么我们需要Python程序中的OS线程。我认为多个OS进程+OS进程中的多个绿色线程应该足够了,对吗?@Eric:OS线程主要用于多路I/O。它们也可以与NumPy和其他一些库结合使用,这些库在计算成本高昂的操作中释放GIL。