【发布时间】:2019-04-08 17:37:35
【问题描述】:
我正在尝试侦听端口的基本服务器程序,并且对于每个传入请求,它都会生成新的守护线程并继续执行。以前类似的代码曾经可以工作,现在这个东西不工作了。
server.py
import multiprocessing as mu
from time import sleep
from random import random
import socket
def worker():
while(True):
print("Inside worker....")
sleep(2)
socketObj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ("127.0.0.1", 8080)
socketObj.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
socketObj.bind(server_address)
socketObj.listen(10)
while(True):
print("Listening...")
data_socket, client_address = socketObj.accept()
a = data_socket.recv(9000)
p = mu.Process(target=worker, args=())
p.daemon = True
p.start()
client.py
import socket
s = "dummydata"
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect(('127.0.0.1', 8080))
socket.send(str.encode(s))
我先运行服务器,然后运行客户端。不知何故,它不断为每个请求打印Listening...(实际上它有时会打印两次)并且从未打印过Inside worker...。为什么守护线程永远不会产生?它在您的机器上的行为是否相同?如果是,为什么?
【问题讨论】:
-
无法复制,在我的电脑上运行良好。
-
它是否在您的机器上打印
Inside worker...? -
是的,内部工人
标签: python multithreading