在两个Python进程之间的多处理队列中,使用什么IPC机制来共享数据?
这是我的Python代码在两个Python进程之间的多处理队列中,使用什么IPC机制来共享数据?,python,linux,python-2.7,multiprocessing,ipc,Python,Linux,Python 2.7,Multiprocessing,Ipc,这是我的Python代码 #!/usr/bin/env python import multiprocessing import time def worker(q): while True: data = q.get() print 'worker: got: %d' % data if data == -1: print 'worker: done' break def master(
#!/usr/bin/env python
import multiprocessing
import time
def worker(q):
while True:
data = q.get()
print 'worker: got: %d' % data
if data == -1:
print 'worker: done'
break
def master():
q = multiprocessing.Queue()
p = multiprocessing.Process(target=worker, args=(q,))
p.start()
for i in range(5):
q.put(i)
print 'master: put: %d' % i
time.sleep(1)
q.put(-1)
p.join()
print 'master: done'
master()
print 'exiting ...'
下面是我在Debian9GNU/Linux系统上运行此代码时的输出
$ python q.py
master: put: 0
worker: got: 0
master: put: 1
worker: got: 1
master: put: 2
worker: got: 2
master: put: 3
worker: got: 3
master: put: 4
worker: got: 4
worker: got: -1
worker: done
master: done
exiting ...
我试图找到一些证据,证明主程序和
工作进程正在通过
套接字、消息队列或共享内存。但我似乎找不到
支持它的证据
$ ps -ef | grep python | grep -v grep; netstat -nopa | grep python; ipcs
lone 2914 9836 2 12:54 pts/1 00:00:00 python q.py
lone 2915 2914 0 12:54 pts/1 00:00:00 python q.py
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
------ Message Queues --------
key msqid owner perms used-bytes messages
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 163840 lone 600 393216 2 dest
0x00000000 262145 lone 600 393216 2 dest
0x00000000 360450 lone 600 393216 2 dest
0x00000000 142344195 lone 600 524288 2 dest
0x00000000 101941252 lone 600 4194304 2 dest
0x00000000 950277 lone 600 524288 2 dest
0x00000000 118194183 lone 600 696320 2 dest
0x00000000 118292488 lone 600 4153344 2 dest
0x00000000 117899273 lone 600 4153344 2 dest
0x00000000 118226954 lone 600 696320 2 dest
0x00000000 123535371 lone 600 86016 2 dest
0x00000000 123338764 lone 600 1728512 2 dest
0x00000000 123240461 lone 600 1798144 2 dest
0x00000000 123568144 lone 600 86016 2 dest
0x00000000 137330705 lone 600 32768 2 dest
0x00000000 137232402 lone 600 81920 2 dest
0x00000000 29098003 lone 600 4194304 2 dest
0x00000000 137265172 lone 600 81920 2 dest
0x00000000 137297941 lone 600 151552 2 dest
0x00000000 35258391 lone 600 393216 2 dest
0x00000000 35291160 lone 600 12288 2 dest
0x00000000 35323929 lone 600 12288 2 dest
0x00000000 35356698 lone 600 393216 2 dest
0x00000000 35520539 lone 600 12288 2 dest
0x00000000 35422236 lone 600 393216 2 dest
0x00000000 35455005 lone 600 12288 2 dest
------ Semaphore Arrays --------
key semid owner perms nsems
- 如何将数据放入
从 主进程到辅助进程多处理队列
- 我可以运行哪些命令来查找IPC机制的证据,IPC机制用于将
中的数据从主进程传输到工作进程多处理.Queue
管道
,在这里实现:
它使用os.pipe()
,在此处实现:
它使用了
pipe2()
,记录在这里:这是一个有趣的问题<代码>多处理设计为跨平台。我不确定是否使用POSIX IPC。@cᴏʟᴅsᴘᴇᴇᴅ 检查约翰·兹温克的答案。