Python线程 - 线程无法启动

时间:2014-02-09 19:17:17

标签: python multithreading

我对线程模块很新,但我的问题是线程似乎无法启动。我试图使用currentThread函数来查看它们是新线程的开始但我唯一看到的是主线程。此外,在每个教程中,我看到他们使用类或子类,如类t(threading.Thread)。所以我的方法是错误的还是我必须使用类来启动python 3中的线程。 这是我写的一些脚本:

第一个:

    import threading

    def basicThread(threadName,nr):
        print("Thread name ",threadName,", alive threads ",nr)

    for i in range(0,11):
        print(threading.activeCount())
        print(threading.currentThread())
        t = threading.Thread(target = basicThread,args = ("Thread - %s" %i,i,))
        t.start()
        t.join()

第二:

import threading

def openFile():
    try:
        file = open("haha.txt","r+")
        print("Finished in opening file : {0}".format(file))
    except IOError as e:
           print("Error : {0}".format(e))

def user(threadName,count):
    age = int(input("Enter your age : "))
    name = str(input("Enter your name : "))
    print(age,name)
    print(threadName,count)

threadList = []

thread_1 = threading.Thread(target = openFile)
thread_1.start()
thread_1.join()
thread_2 = threading.Thread(target = user,args = ("Thread - 2",threading.activeCount()))
thread_2.start()
thread_2.join()

2 个答案:

答案 0 :(得分:4)

thread.join()做什么是等待线程结束它正在做的事情。要允许其他线程启动,请将此行移至过程的末尾。

答案 1 :(得分:1)

  1. current_thread()返回主线程,因为您在main方法中调用它。从方法“basicThread”打印的行表示运行该方法的实际线程(它们是新形成的线程)。

  2. 将thread_1.join()移至底部,如上一个答案