3

这个来源只是一个例子:

inputf = open('input', 'r')
outputf = open('output', 'a')

for x in inputf:
    x = x.strip('\n')
    result = urllib2.urlopen('http://test.com/'+x).getcode()
    outputf.write(x+' - '+result+'\n')

我想为此添加线程以同时检查几个 URL。用户每次都应该决定他想使用多少线程。输出的顺序并不重要。

什么是最好和最美丽的方式?

4

1 回答 1

4

我喜欢multiprocessing.pool.ThreadPool(或multiprocessing.pool.Pool

喜欢:

from multiprocessing.pool import ThreadPool

n_threads = 5
pool = ThreadPool(processes=n_threads)

threads = [pool.apply_async(some_function, args=(arg1,)) for arg1 in args]

pool.close()
pool.join()

results = [result.get() for result in threads]
于 2013-07-18T23:11:54.923 回答