Rumah > Soal Jawab > teks badan
thread_list = []
for kw_do in exc_kw():
thread_list.append(Thread(target=zz_kw,args=(kw_do,)))
for thread in thread_list:
thread.start()
for thread in thread_list:
thread.join()
这样运行会卡死,请问怎样控制5个线程或者10个线程呢?
大家讲道理2017-04-17 17:59:54
pool = threadpool.ThreadPool(poolSize)
poolSize digunakan untuk mengawal bilangan thread
import threadpool
import requests
def get_url(url):
r = requests.get(url)
return url, r.status_code
def print_result(request, result):
print result
urls = [
'http://www.baidu.com',
'http://www.jd.com',
'http://www.taobao.com',
'https://segmentfault.com',
'http://www.baidu.com',
'http://www.jd.com',
'http://www.taobao.com',
'https://segmentfault.com',
'http://www.baidu.com',
'http://www.jd.com',
'http://www.taobao.com',
'https://segmentfault.com'
]
pool = threadpool.ThreadPool(5)
for th in threadpool.makeRequests(get_url, urls, print_result):
pool.putRequest(th)
pool.wait()
迷茫2017-04-17 17:59:54
Masalah anda mungkin terdapat terlalu banyak benang apabila terdapat banyak tugas. Untuk melihat masalah ini secara berbeza, gunakan satu utas, tetapkannya kepada 5 atau 10, dan kemudian buang tugasan itu ke dalam kumpulan utas Rujuk kepada penggunaan python ThreadPoolExecutor.
伊谢尔伦2017-04-17 17:59:54
Adalah disyorkan untuk menggunakan pelbagai proses untuk mencuba untuk melihat sama ada fenomena tersekat juga akan berlaku!
Cuba cari punca tersekat, bukannya terus mengawal bilangan benang untuk menyembunyikan masalah tersangkut!