multithreading - 类型错误:req_con() 采用 1 个位置参数,但给出了 12 个
问题描述
基本上我试图返回我在函数中获得的 ipaddress 并将其作为参数传递给另一个函数。由于它是一个 IP 地址,因此它给了我一个如上所述的错误。有没有其他方法可以让它变得更好?
这是代码:
import zmq
import time
import socket
import threading
import multiprocessing
from threading import Thread
def bd_recv():
login to get ip
def req_con(host):
context=zmq.Context()
socket = context.socket(zmq.REQ)
#address=host,port
port=3233
socket.connect("tcp://" "%s:%d" % ((host),port))
print("sending request")
socket.send_string("hey controller")
msg=socket.recv(1024)
print("received reply: %s" %msg)
class ThreadWithReturnValue(Thread):
def __init__(self, group=None, target=None, name=None,
args=(), kwargs={}, Verbose=None):
Thread.__init__(self, group, target, name, args, kwargs)
self._return = None
def run(self):
print(type(self._target))
if self._target is not None:
self._return = self._target(*self._args,
**self._kwargs)
def join(self, *args):
Thread.join(self, *args)
return self._return
if __name__=='__main__':
#t1=threading.Thread(target=bd_recv,name='bdrecv')
t3 = ThreadWithReturnValue(target=bd_recv)
#t1.start()
t3.start()
host=(t3.join()) --> The return ipaddress b is given as a host to other function
t2=threading.Thread(target=req_con,name='req',args=host,) --> here it gives me the error as 12 is given
t2.start()
解决方案
不幸的是,我确实犯了一个小错误,我需要改变的是:
t2=threading.Thread(target=req_con,name='req', args=(host,)) --> this brackets in the host has to be added
推荐阅读
- r - 在 R 中使用 For 循环将元素添加到列表
- javascript - 如何提取从 API 获取的 JSON 数据并传递给 react-plotly?
- python - Pandas groupby 通过另一列中的每个逗号分隔值来获取一列的总数
- flutter - 如何知道返回值是否为未来
- java - 我序列化 SealedObject 错了吗?
- flask - 从 OpenID 连接提供者回调重定向后无法访问 Flask-Login current_user
- javascript - 如何存储屏幕上显示的当前值?
- r - 字符串中嵌入 nul 错误:尝试在 Windows 系统中打开 rds 文件时(代码在 Mac 中运行良好)
- go - 如何使用 gzip 压缩 http.FileServer 内容?
- flutter - 如何访问本地文件目录以使用颤振选择文件?