0
-- 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

问候,

4

0 回答 0