gpt4 book ai didi

python - 如何在多线程或多处理中运行脚本

转载 作者:行者123 更新时间:2023-11-28 22:41:04 26 4
gpt4 key购买 nike

这个脚本需要 2 秒才能完成,但是如何在多个线程中运行它并在 50 毫秒内完成

import urllib2                                                                                                                              
from threading import Thread
def btl_test(url):
page = urllib2.urlopen(url)
print page


url = ["http://google.com","http://example.com","http://yahoo.com","http://linkedin.com","http://orkut.com","http://quora.com","http://facebook.com","http://myspace.com","http://gmail.com","http://nltk.org","http://cyber.com"]
for i in url:
t = Thread(target = btl_test,args=(i,))
t.start()

如何对结果进行排序?

最佳答案

from contextlib import closing # http://stackoverflow.com/a/25968716/968442
from multiprocessing.pool import Pool

with closing(Pool(len(url))) as pool:
pool.map(btl_test, url)

应该是方便的片段。关于顺序,您可以使用元组分配映射并相应地打印它们。


更新:

根据这个blog pool.map 将返回保留顺序的输出。这是在不更改顺序的情况下以 (url, html_content) 格式打印元组列表的代码

urls = ["http://google.com","http://example.com","http://yahoo.com","http://linkedin.com","http://orkut.com","http://quora.com","http://facebook.com","http://myspace.com","http://gmail.com","http://nltk.org","http://cyber.com"]

def btl_test(url):
import urllib2
return url, urllib2.urlopen(url).read()

from contextlib import closing # http://stackoverflow.com/a/25968716/968442
from multiprocessing.pool import Pool

with closing(Pool(len(urls))) as pool:
result = pool.map(btl_test, urls)

print result

关于python - 如何在多线程或多处理中运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com