Я не вижу, чтобы вызывался какой-либо из моих подпроцессов, когда я использую функцию apply_async() многопроцессорной обработки.Pool

#python

#python

Вопрос:

Я знаю основное использование многопроцессорной обработки в отношении пулов, и я использую функцию apply_async (), чтобы избежать блокировки, мой проблемный код, такой как:

 from multiprocessing import Pool, Queue
import time

q = Queue(maxsize=20)
script = "my_path/my_exec_file"

def initQueue():
   ...

def test_func(queue):
    print 'Coming'
    While True:
     do_sth
    ...

if __name__ == '__main__':
    initQueue()
    pool = Pool(processes=3)
    for i in xrange(11,20):
        result = pool.apply_async(test_func, (q,))
    pool.close()
    while True:
        if q.empty():
            print 'Queue is emty,quit'
            break
        print 'Main Process Lintening'
        time.sleep(2)
  

Выводимые результаты всегда являются основным процессом, я не могу найти слово «Coming»..
Приведенный выше код не содержит синтаксических ошибок и никаких исключений.
Любой может помочь, спасибо!

Комментарии:

1. Вы когда-нибудь ждали, пока пул выполнит какую-либо работу, или всегда вызывали pool.close() сразу?

2. При первом запуске он не может работать, сегодня я запускаю снова, он работает. Но есть и другие проблемы: в test_func() то, что он собирается сделать, это выполнить m another .py(скрипт похож на spider и может запускаться без каких-либо проблем). Я вижу только одну строку «Coming» и просто останавливаюсь на ней, чтобы выполнить скрипт. Но я хочу видеть, как работает apply_async (), я имею в виду, что должен быть выведен хотя бы еще один «приход»

3. Основной сценарий, я хочу, чтобы основной процесс отслеживал мою очередь, и если я подставляю while в test_func() для отображения имени моего процесса, я всегда получаю «Основной процесс»