【发布时间】:2016-07-22 02:38:20
【问题描述】:
我有一个 TCP 服务器和客户端。在服务器脚本的某个时刻,我启动了一个进程,该进程需要能够获取每个新连接并向其发送数据。为此,我有一个multiprocessing.Queue(),我想将来自主进程的每个新连接放入其中,以便我打开的进程可以从中获取连接并向它们发送数据。但是,您似乎无法将任何您想要的东西传递给队列。当我尝试传递连接(一个套接字对象)时,我得到:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/queues.py", line 266, in _feed
send(obj)
TypeError: expected string or Unicode object, NoneType found
我可以使用任何替代方案吗?
【问题讨论】:
-
你不能那样做。
Queue旨在发送 Python 对象,而套接字涉及特定于操作系统的数据(例如套接字 fd),因此它们不能简单地传递给子进程。 -
好吧,我找到了解决这个问题的方法。但是,我真的很想看到一种真正做到这一点的方法,即使你说这是不可能的。
标签: python-2.7 sockets python-multiprocessing