python - multiprocessing.Pool ==> TypeError:预期的字符串或 Unicode 对象,NoneType 找到
问题描述
这些是一些 Python 脚本,用于通过套接字从客户端节点获取 mac。
我multiprocessing.pool
用来让它运行得更快,但我得到这个错误:
TypeError: expected string or Unicode object, NoneType found
这是我正在使用的代码:
服务器:
import os
import re
import socket
import sys
import multiprocessing
def get_mac(cli, caddr):
while True:
macinfo = cli.recv(1024)
if macinfo:
print('get [{}] from {}'.format(macinfo, caddr))
else:
print('establish but get nothing from {}'.format(caddr))
print('TERMINAL CLI-SOCKET')
cli.close()
cli.sendall('Done')
log.info('Send Confirm <Done> To {}'.format(caddr))
info = macinfo.split(',').strip()
return info
def gen_config(info):
print(info)
def start(func):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
addr = ('mn0', 1995)
sock.bind(addr)
sock.listen(5)
pool = multiprocessing.Pool()
while True:
print('waitting for new connect ...')
cli, caddr = sock.accept()
print('establish new connect with {}'.format(caddr))
pool.apply_async(func, args=(cli, caddr,), callback=gen_config)
pool.close()
pool.join()
if __name__ == '__main__':
start(get_mac)
客户:
#!/usr/bin/env python
import socket
def send():
addr = ('mn0', 1995)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(addr)
print('Establish Connect with {}'.format(addr))
sock.sendall('{},{}'.format('192.168.85.1', 'da:ad:as:as:as:sa'))
print('send 192.168.85.1 da:ad:as:as:as:sa')
data = sock.recv(1024)
if data == 'Done':
print('Confirm Send')
sock.close()
if __name__ == '__main__':
send()
完整的错误信息:
[root@mn0 svr]# python svr.py
waitting for new connect ...
establish new connect with ('192.168.85.128', 52798)
waitting for new connect ...
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib64/python2.7/threading.py", line 812, in __bootstrap_inner
self.run()
File "/usr/lib64/python2.7/threading.py", line 765, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 342, in _handle_tasks
put(task)
TypeError: expected string or Unicode object, NoneType found
解决方案
推荐阅读
- php - 请提供有效的缓存路径 Laravel5.7
- php - Laravel JSON 输出格式
- azure - 部署的 REST API 总是给出 500 错误
- git - Bamboo + Git Azure DevOps =“致命:无法从远程存储库读取。”。对于 Git 子模块
- java - 从包含 3 通道像素信息的 3d 字节数组创建 java 位图图像
- mongodb - 如何为所有文档生成唯一字段
- javascript - 在复选框中输入文本到 JSON 数据
- c# - 如何从不同于 ViewModel 的类更新我的集合
- c++ - 如何访问二维数组
- python - 为什么 PIL.resize() 会改变颜色?