代码之家  ›  专栏  ›  技术社区  ›  chandank

python中的c风格线程创建

  •  1
  • chandank  · 技术社区  · 12 年前

    嗨,我是python的新手,想在循环中创建多个线程,类似于(C风格)

    for (;i < 10; i++)
     thread[i]= pthread_create(&thread[i],&attr,func)
    

    我不知道如何在python中做同样的事情?基本上,我想让thread[]变量作为全局变量,一次创建所有线程,然后一次启动。我已经写了一个类似的python程序,但我认为用上面的风格会更好。

    def thread_create(thread_number):
        command_string = "Thread-" + "%d" %thread_number
        thread = myThread(thread_number, command_string)
        thread.start()
    
    # Start new Threads
    
    for i in range(5):
        thread_create(i)
    
    3 回复  |  直到 12 年前
        1
  •  1
  •   Hans Then    12 年前

    你觉得这样更好吗?

    for i in range(5):
        command_string = "Thread-" + "%d" % i
        thread = Thread(i, command_string)
        thread.start()
    
        2
  •  0
  •   grieve    12 年前

    重复使用你的thread_create函数和列表理解来获得你想要的东西。

    def thread_create(thread_number):
        command_string = "Thread-" + "%d" %thread_number
        return myThread(thread_number, command_string)
        # start them later
    
    
    # see note below
    threads = [thread_create(x) for x in range(5)]
    
    for t in threads:
        t.start()
    

    注:

    threads = [thread_create(x) for x in range(5)]
    

    只是

    threads = []
    for x in range(5):
        threads.append(thread_create(x))
    
        3
  •  0
  •   jdi    12 年前

    如果你想要一对一的等价物,那么可能就是这样:

    threads = []
    for i in xrange(10):
        t = Thread(target=aFunc, name="Thread-%d" % i)
        t.start()
        threads.append(t)
    

    或者,如果您只是想构建线程对象,并稍后随意启动它们。。。

    threads = []
    for i in xrange(10):
        t = Thread(target=aFunc, name="Thread-%d" % i)
        threads.append(t)
    
    threads[2].start()