首页 > 解决方案 > 类型错误: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()

标签: multithreadingzeromqpython-multithreadingpyzmq

解决方案


不幸的是,我确实犯了一个小错误,我需要改变的是:

t2=threading.Thread(target=req_con,name='req', args=(host,)) --> this brackets in the host has to be added

推荐阅读