多处理无法运行

2024-04-26 07:22:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习python多处理,下面的代码在jupyter笔记本中。但是它不能执行子进程任务函数download_task,只能输出类似0.11.的内容,并且没有错误。你知道吗

当我将此代码复制到联机python executer时,它工作正常。你知道吗

from multiprocessing import Process
from os import getpid
from random import randint
from time import time, sleep

def download_task():
    time_to_download = randint(5, 10)
    print("befor sleep")
    sleep(time_to_download)
    print("after sleep")
def main():
    start = time()
    p1 = Process(target=download_task)
    p1.start()
    p2 = Process(target=download_task)
    p2.start()
    p1.join()
    p2.join()
    end = time()
    print('%.2f.' % (end - start))

main()

下面是jupyter笔记本执行结果的截图:, enter image description here


Tags: 代码fromimporttasktimedownload笔记本jupyter
1条回答
网友
1楼 · 发布于 2024-04-26 07:22:13

我设法通过在函数名后面添加()来解决这个问题。你知道吗

from multiprocessing import Process
from os import getpid
from random import randint
from time import time, sleep

def download_task():
    time_to_download = randint(5, 10)
    print("befor sleep")
    sleep(time_to_download)
    print("after sleep")
def main():
    start = time()
    p1 = Process(target=download_task())
    p1.start()
    p2 = Process(target=download_task())
    p2.start()
    p1.join()
    p2.join()
    end = time()
    print('%.2f.' % (end - start))

main()

如果您在终端上运行,您将看到错误消息:

AttributeError: Can't get attribute 'download_task' on <module '__main__' (built-in)>

显然,通过只使用download_task,它将download_task视为main的属性,而不是函数。你知道吗

相关问题 更多 >