8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Python:线程没有并行运行

Ayoub ASSAOUD 2月前

27 0

我正在尝试使用 UDP 连接创建一个网络项目。我创建的服务器必须是多线程的,以便能够从多个客户端接收多个命令。但是当

我正在尝试使用 UDP 连接创建一个网络项目。我创建的服务器必须是多线程的,以便能够从多个客户端接收多个命令。但是,当尝试对服务器进行多线程处理时,只有一个线程在运行。以下是代码:

def action_assigner():
    print('Hello Assign')
    while True:
        if work_queue.qsize() != 0:
            data, client_address, request_number = work_queue.get()
            do_actions(data, client_address, request_number)


def task_putter():
    request_number = 0
    print('Hello Task')
    while True:
        data_received = server_socket.recvfrom(1024)
        request_number += 1
        taskRunner(data_received, request_number)


try:
    thread_task = threading.Thread(target=task_putter())
    action_thread = threading.Thread(target=action_assigner())

    action_thread.start()
    thread_task.start()

    action_thread.join()
    thread_task.join()


except Exception as e:
    server_socket.close()

运行代码时,我只得到 Hello Task 结果,表示 action_thread 从未启动。有人能解释如何解决这个问题吗?

帖子版权声明 1、本帖标题:Python:线程没有并行运行
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Ayoub ASSAOUD在本站《multithreading》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这里的问题是,在创建线程本身时,您 调用的 函数应该是每个线程的“主体”。执行该行时, thread_task = threading.Thread(target=task_putter()) Python 将首先解析括号内的表达式 - 它调用函数 task_putter ,该函数永远不会返回。程序中的后续行都不会运行。

    在创建线程和其他以可调用对象作为参数的调用时,我们所做的是传递函数本身,而不是调用它(调用它将运行该函数并计算其返回值)。

    只需将创建线程的两行更改为不在参数上放置调用括号 target= ,即可越过这一点:

    ...
    
    try:
        thread_task = threading.Thread(target=task_putter)
    
        action_thread = threading.Thread(target=action_assigner)
        ...
    
返回
作者最近主题: