我正在使用 Python 2.7.6 和线程模块。
我对python线程很新。我正在尝试编写一个程序来从文件系统中读取文件并在我的数据库中存储一些哈希值。这是很多文件,我想在线程中做。就像每个以a开头的文件夹的一个线程一样,每个以b开头的文件夹都有一个线程。因为我想在线程中使用数据库连接,所以我不想一次生成26个线程。所以我希望有10个线程在运行,如果其中一个完成,我总是想开始一个新线程。
我不太确定主程序的外观如何。如何在没有大量开销的情况下管理这个线程列表?
答案 0 :(得分:1)
我想告诉你python不能很好地管理多线程:你可能知道(或不知道)python附带一个全局解释器锁(GIL),它不允许真正的并发:事实上,一次只能执行一个线程。 (但是,由于机器的进程调度程序,您不会将执行视为顺序执行)
请点击此处了解详情:http://www.dabeaz.com/python/UnderstandingGIL.pdf
那就是说,如果你仍然想这样做,请看一下信号量:每个线程都必须获取它,如果你将这个锁初始化为10,那么一次只能获得10个线程它。 https://docs.python.org/2/library/threading.html#threading.Semaphore
希望有所帮助