【发布时间】:2014-12-15 23:14:34
【问题描述】:
感谢@user5402 之前的solution。
我正在尝试处理多条排队的消息。代码如下:
import sys
import socket
from multiprocessing import Process, Queue
UDP_ADDR = ("", 13000)
def send(m):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(m, UDP_ADDR)
def receive(q):
buf = 1024
Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Sock.bind(UDP_ADDR)
while True:
(data, addr) = Sock.recvfrom(buf)
q.put(data)
在客户端函数中,我想处理多个具有连锁影响的消息。
def client():
q = Queue()
r = Process(target = receive, args=(q,))
r.start()
print "client loop started"
while True:
m = q.get()
print "got:", m
while m == "start":
print "started"
z = q.get()
if z == "stop":
return
print "loop ended"
r.terminate()
所以当start 被发送时,它会进入一个无限打印"started" 的while 循环,并等待stop 消息通过。上面的client 代码不起作用。
下面是启动函数的代码:
if __name__ == '__main__':
args = sys.argv
if len(args) > 1:
send(args[1])
else:
client()
【问题讨论】:
标签: python multithreading sockets queue python-multithreading