Python 线程 - 让线程开始而不等待前一个线程完成

标签 python multithreading python-2.7

我希望我的所有线程同时启动,但在我的代码中,它会等待前一个线程完成它的进程,然后再启动一个新线程。我希望所有线程并行启动。

我的代码:

class Main(object):

    start = True
    config = True
    givenName = True

    def obscure(self, i):
        i = i

        while self.start:
            Config.userInfo(i)
            break
        while self.config:
            Config.open()
            break
        while self.givenName:
            Browser.openSession()
            break

Main = Main()

while __name__=='__main__':
    Config.userInfo()
    Config.open()
    for i in range(len(Config.names)):
        Task = Thread(target=Main.obscure(i))
        Task.start()
    break

最佳答案

这一行是主要问题:

Task = Thread(target=Main.obscure(i))

target 传递调用 Main.obscure(i) 的结果,不是要成为的函数在线程中运行。您当前正在主线程中运行该函数,然后基本上传递 target=None

你想要:

Task = Thread(target=Main.obscure, args=(i,))

然后,Thread 将安排在线程内使用列出的参数调用 Main.obscure

此外,Main = Main() 用 Main 的实例覆盖了 class Main 声明...但是您将永远无法创建另一个实例,因为您失去了对类(class)的引用。使用其他名称,例如 main = Main()

关于Python 线程 - 让线程开始而不等待前一个线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47481132/

相关文章:

python - 将 python 时区感知日期时间字符串转换为 utc 时间

Java 多线程服务器未按预期工作

html - 使用 BeautifulSoup 通过标签类迭代 html

mysql - 当我想打印时出现Python错误

python - Python 的 AsyncIO 可以在现有的 Web 应用程序中使用吗?

python - python中的自调用函数

python - 子进程无法正确打印 esxcli 命名空间

c++ - std::forward_list::insert_after 线程安全

multithreading - 哈希和数组的推送和弹出操作是原子的和线程安全的吗?

为两个文件中存在的内容执行关键字匹配的 Python 程序