繁体   English   中英

无意中炸了我的电脑.. 为 python 计算我们的多处理

unintentionally fried my pc.. figuring our multiprocessing for python

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这可能是一个非常愚蠢的问题.. 我在 python 中愚弄了一些人,并决定制作两个版本的素数应用程序,一个从一开始就无限地计算所有素数,直到你炒你的电脑,一个让用户输入一个数字,然后检查该数字是否为质数。

所以我做了一个工作正常但速度很慢的。 花了 41 秒来检查 269996535 是否是素数。 我想我的算法很糟糕..但这不是我关心的问题,然后我阅读了多处理(多线程)并决定给它一个 go,经过几分钟的修补,我让它在较小的数字上工作,而且速度很快,所以我决定与我之前的大数字(269996535)进行比较,然后我看着我的 resmon 并且 cpu 飙升,然后音乐停止了。 我所有的程序都开始一一崩溃,最后蓝屏。 有人可以解释为什么会发生这种情况以及为什么我不能让它工作。 我不是在寻找更好的算法,我只是想弄清楚为什么我的电脑在尝试多线程时崩溃了。

有效的代码

    import time
def prime(x):
    start = time.time()
    num = x+1
    range_num = []
    two = x/2
    five = x/5
    ten = x/10
    if not two.is_integer() or five.is_integer() or ten.is_integer():
        for i in range(1, num):
            y = x/i
            if y.is_integer():
                range_num.append(True)
            else:
                range_num.append(False)

        total = 0
        for ele in range(0, len(range_num)):
            total = total + range_num[ele]
        if num == 1:
            print(1, " is a prime number")
        elif total == 2:
            print(num-1, " is a prime number")
        else:
            print(num-1, " is not a prime number")
    else:
        print(num - 1, " is not a prime number")
    print("This took ", round((time.time() - start), 2), "Seconds to complete")


prime(269996535)

炸了我的电脑的代码

    import time
import multiprocessing

global range_num
range_num = []

def part_one(x, denom):
    if not denom == 0:
        for i in range(1, x):
            y = x/denom
            if y.is_integer():
                range_num.append(True)
            else:
                range_num.append(False)


if __name__ == '__main__':
    start = time.time()
    x = int(input("Enter number: "))
    num = x+1
    range_num = []
    if num-1 == 1:
        print("1 is a prime number")
    for i in range(0, x):
        p = multiprocessing.Process(target=part_one, args=(x, i,))
        p.start()
    for process in range_num:
        process.join()

    total = 0
    for ele in range(0, len(range_num)):
        total = total + range_num[ele]
    if total == 2:
        print(num-1, " is a prime number")
    else:
        print(num - 1, " is not a prime number")
2 个回复

...我的程序开始一一崩溃,然后最终蓝屏。 有人可以解释为什么会这样吗...?

您的 PC 散热不足。 CMOS 逻辑越难工作,产生的热量就越多。 让它冷却后,它很可能会好转。

你的电脑不是唯一过热的电脑。 在我的整个职业生涯中,我不得不时常处理过热的 PC。 长时间的计算会关闭我现在用于工作的笔记本电脑,除非我将它设置在块上,并且我在我的桌子上设置了一个小风扇,以便在其上下吹气。

如果它在桌面机箱或塔式机箱中,您可以尝试取下盖子并将风扇指向它。 如果它是机架式服务器,那么您运行它的房间没有足够的冷却,或者您应该要求退款。


PS,如果您需要将裸露的内置硬盘驱动器连接到 PC,那么小型台式风扇是必不可少的。 它们不能在没有强制气流的情况下工作。

这是一个概念验证:

def has_divisors_in_range(number: int, the_range):
    for divisor_candidate in the_range:
        # If `divisor_candidate` divides `number` evenly,
        # then `number` is not prime
        if number % divisor_candidate == 0:
            return divisor_candidate

    return -1

nprocs = 4
processes = [
    multiprocessing.Process(
        target= has_divisors_in_range,
        args=(num, range(t + 1, num + 1, nprocs))
    )
    for t in range(1, nprocs + 1)
]

# Wait for the processes somehow...

然后你可以收集所有这些过程的结果,如果它们都是-1 ,那么这个数字是素数。

1 python3多处理示例崩溃了我的电脑:(

我是多处理新手 我已经为两个“强烈推荐”的多处理示例运行了示例代码,以响应其他stackoverflow多处理问题。 这是一个例子(我不敢再跑了!) test2.py (从pydev运行) 当我运行这个时,我的计算机很快就会慢下来。 它逐渐变慢。 过了一段时间,我设法进 ...

4 如果我在同一台电脑上的不同虚拟机上运行带有多处理功能的 python 代码,GIL 会干扰吗?

我目前有一个 python 脚本,可以从单个 url 中抓取数据。 为了加快我在脚本中使用池多处理模块的过程,为了便于解释,这个脚本被称为“script_one.py”。 该脚本专门执行“获取请求”以从目标 url 收集 json/html 结果并不断切换代理地址,并将结果保存在文本文件中。 ...

5 PDO炸了我的网站-有什么提示吗?

在过去的几个月中,我已经花了很多时间来升级我的网站,包括将数据库查询升级到PDO。 不久前,我在线发布了一个测试查询,并收到一条错误消息,因此在进入我搜索过的所有技术修补程序之前,请先与我的Web主机进行检查。 他说问题很简单:我的服务器上未安装PDO。 于是他安装了它-我的所有网站都 ...

6 我炸过我的A2了吗?

我正在玩一个SparkFun Redboard(本质上是Arduino UNO)。 我有一个简单的5V传感器,一直在尝试与A2和AnalogRead()一起使用。 似乎没有任何工作。 它应该从0到5V循环,这应该给我从0到1023的值,而我会得到大约260的恒定值。 无奈之下,我 ...

2014-03-07 05:10:48 1 288   arduino
7 Python多处理会逐渐增加内存,直到它运行我们的

我有一个带有多个模块的python程序。 他们像这样去: 作业类,它是切入点并管理程序的整体流程 任务类,是要在给定数据上运行的任务的基类。 从Task类派生了许多专门为在不同数据列上进行不同类型的计算而创建的SubTask类。 想一想数据中的10列,每个列都有自己的Task进行处理。 例如 ...

9 我的“工具”的Python线程或多处理

我创建了一个脚本: 从.txt导入IP列表(大约5K) 连接到REST API并根据IP(每个IP的网络日志)执行查询 从API返回数据,并对数据进行一些计算 计算结果写入.csv 目前,这确实很慢,因为一次需要一个IP来完成所有操作,然后转到下一个IP。 我可能 ...

10 解决如何在Tkinter中为我的Python程序更新标签的问题

因此,我在类中编写了一个Python程序,该程序使用Caesar密码来接受用户输入并将其作为密文输出。 由于我有更多的时间参与该项目,因此我计划在Tkinter中为其提供GUI。 但是,当我将结果密文分配给标签时,它将不会显示它并将其保留为空白。 我对python不熟悉,对Tkinter则 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM