-- I launch 10 threads
-- Threads share Queue.Queue().
-- Each Thread gets an item from the Queue
-- Each thread communicates first with External WebServer
-- Processes Data coming from Ext. WebServer
-- Communicates with internal DB
-- Gets the next the item from Queue
-- It repeats until Queue finishes
-- At which point all threads are joined and main thread exits normally
-- In the code, in main thread I populate Queue.Queue() with 500 items
-- Then each thread gets the first item in the queue.
我观察到:
-- 最初(这意味着当每个线程正在处理其第一项时)所有 10 个线程都启动并正常进行 -- 但是,从第二项开始,10 个线程中只有 2 个在进行。-- 由于涉及多个网络、I/O 操作,我假设所有线程都应该交错并获得一些 CPU 时间。
你能解释一下这种行为吗?任何指向文档的指针或以前在堆栈上提出的问题都会有所帮助。
sysctl hw.ncpu (mac OS) hw.ncpu: 2
问候,