python - 主线程卡在Python多线程中

标签 python multithreading

我有两个简单的函数:

def run(self):
    # Make 20 instances of clients and start those
    for i in xrange(0,20):
        t = threading.Thread(target = self.run_clients_in_seperate_threads())
        t.start()

def run_clients_in_seperate_threads(self):
    print 'inside run_clients_in_seperate_threads'
    client_id = self.generate_client_id()
    cl = Client(client_id)
    cl.start()

这里,最后一行:cl.start()是一个无限循环。

我认为主线程在启动子线程后将变得空闲,因此总共会产生 20 个线程。 但似乎主线程在启动第一个线程后等待。

有人可以解释一下我做错了什么吗?

最佳答案

使用 target = self.run_clients_in_seperate_threads 并将 self 传递给 args 参数。你这样做的方式是在主线程中调用该方法,并以无限循环结束:self.run_clients_in_seperate_threads != self.run_clients_in_seperate_threads()

关于python - 主线程卡在Python多线程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24323654/

相关文章:

python - 覆盖用于测试的 SQLAlchemy 列

读取套接字时Java中断线程

android - SQLite 数据库中的并发性

java - 点对点聊天无法接收/发送消息

python - 如何在 Apache Spark 预构建版本中添加任何新库,如 spark-csv

python - 为 pysqlite3 数据库创建类似 "less"的控制台寻呼机界面

python - 等待按钮点击

c++ - 等待主线程直到条件

python - 为什么我的手动卷积与 scipy.ndimage.convolve 不同

python - 在 Python 3.x 中,为什么 os.chdir() 与 os.listdir() 和 os.scandir() 一起使用时表现不同? (Python 3.9.7)