0
0 комментариев

Здравствуйте, подскажите пожалуйста, не могу ничего понять:

Linux: Debian 10 x64, Python 3.5.3

При первом запуске процесса _Kernel c аргументом очередь QKernel, процесс запускается, получает из данной очереди посылки.

«_Kernel=Process(target=pKernel,args=(QKernel,))»

После удаления и последующего создания данного процесса, он не забирает посылки из очереди, хотя очередь есть и накапливается.

Вывод программы:
Процесс pKernel запущен!!!
KernelQ= <multiprocessing.queues.Queue object at 0x7fdaa6a6ce48>
0
Процесс pKernel получил:Послание в KernelQ
0
Процесс pKernel получил:Послание в KernelQ
0
Процесс pKernel получил:Послание в KernelQ
0
Процесс pKernel получил:Послание в KernelQ
0
1
2
3
4
Размер очереди перед вторичным запуском процесса: 5
Процесс pKernel запущен!!!
KernelQ= <multiprocessing.queues.Queue object at 0x7fdaa6a6ce48>
5
6
7
8
9
[apcode language=»python»]

import sys
from multiprocessing import Process, Queue, Pipe
import pyinotify
from time import sleep
 def pKernel(KernelQ):
    print("Процесс pKernel запущен!!!")
    print("KernelQ= %s" %(KernelQ))
    while True:
        InMsg=KernelQ.get()
        print("Процесс pKernel получил:%s" %(InMsg))
  def pPing(PingQ,KernelQ):
    while True:
        sleep(1)
        print("%s" %(KernelQ.qsize()))
        KernelQ.put("Послание в KernelQ")
  if __name__=="__main__":
# Очереди
    QKernel=Queue()
    QInotify=Queue()
    QPing=Queue()
# Процессы
    _Kernel=Process(target=pKernel,args=(QKernel,))
    _Ping=Process(target=pPing,args=(QPing,QKernel))
# Запуск процессов
    _Kernel.start()
    _Ping.start()
     sleep(5)
    _Kernel.terminate()
    sleep(5)
    print("Размер очереди перед вторичным запуском процесса: %s" %(QKernel.qsize()))
    _Kernel=Process(target=pKernel,args=(QKernel,))
    _Kernel.start()

[/apcode]


Добавить комментарий