如何在使用python的“While”函数中进行多线程处理?

时间:2017-05-31 21:56:07

标签: python sockets chat

我使用socket编写了Python脚本。 我写了一个基本的聊天,但它有一个问题,我不知道如何使用Threading库以使客户端无阻塞地工作。 我尝试使用While,但它说:

  

thread.error:无法启动新线程

这是客户端代码:

import socket
import threading

my_socket = socket.socket()
my_socket = socket.socket()
my_socket.connect(('127.0.0.1', 23))
print('Welcome to the chat room . You can send messages here.')
print('Choose a nickname.')
nickname = raw_input()


def rcv_msg():
    print  (my_socket.recv(1024))


def snd_msg():
    txt = raw_input()
    my_socket.send('[' + nickname + ']: ' + txt)
while True:
    recv_thread = threading.Thread(target=rcv_msg)
    recv_thread.start()
    send_thread = threading.Thread(target=snd_msg)
    send_thread.start()

我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:0)

在while循环中没有结束条件,因此您将创建大量线程,耗尽所有系统资源。

请参阅previous answer

答案 1 :(得分:0)

你不应该在无限循环中创建和启动新线程。 正如Jerry所说,它会一直使用新的线程并使用你所有的系统资源。

如果您的目标是让这些线程连续运行,您可以在send_msg()和rcv_msg()定义中创建循环。