我发现它非常有趣,但不知道为什么:我的一个 python 脚本在 32 位 win 2003 机器上毫不费力地运行(20% 甚至更少的 CPU 使用率),而完全相同的脚本在 64 上几乎花费了 100% 的 CPU位赢2008机器。两台机器具有相同级别的硬件。
基本上,该脚本是多线程的threading
,使用mechanize
模块从数十个网页中抓取特定结果。
无论如何,在那个 64 位操作系统上 CPU 使用率高的原因是什么?
编辑:
在将多线程脚本从 32 位迁移到 64 位时,我实际上是在尝试寻找一些一般注意事项。
好的,代码如下:
def SpawnThreads(amounts, urls_queue, proxies_queue):
for counter in range(amounts):
new_thread = threading.Thread(target = CheckResults, args = (urls_queue, proxies_queue, ))
new_thread.start()
def CheckResults(urls_queue, proxies_queue):
if urls_queue.empty():
return 1
if proxies_queue.empty():
return 1
get url from urls_queue
get proxy from proxies_queue
get html source of url
put proxy back to proxies_queue if everything's all right
spawn_a_new_thread = threading.Thread(target = SpawnThreads, args = (1, urls_queue, proxies_queue)
spawn_a_new_thread.start()
if __name__ == "__main__":
put all urls into urls_queue
put all proxies into proxies_queue
SpawnThreads(100, urls_queue, proxies_queue)