【问题标题】:python multiprocessing not working in jupyter notebookpython多处理在jupyter笔记本中不起作用
【发布时间】:2020-04-27 19:04:50
【问题描述】:

我尝试运行多处理的简单示例,但它不起作用

当我尝试使用线程或以常规方式运行相同的功能时

多处理(不工作):


import multiprocessing 

def do_something():
    print('Sleeping 1 second...')
    time.sleep(1)
    print('Done sleeping')

p1 = multiprocessing.Process(target=do_something)
p2 = multiprocessing.Process(target=do_something)

p1.start()
p2.start()

带线程(工作):


import threading

def do_something():
    print('Sleeping 1 second...')
    time.sleep(1)
    print('Done sleeping')

t1 = threading.Thread(target=do_something)
t2 = threading.Thread(target=do_something)
t1.start()
t2.start()

【问题讨论】:

  • 我运行了代码,两个示例都在我的 jupyter notebook 上运行。这可能会有所帮助:stackoverflow.com/questions/47313732/…
  • 尝试在 do_something 函数调用之后加上括号,例如 do_something() 。您的代码在我添加括号后运行,但它没有产生多个进程
  • 请给我们错误信息或其他解释为什么它不工作。您还应该告诉我们您的环境。如果您使用的是 mac、linux 或 windows,这就是其中一种重要的情况。
  • 括号绝对不是这里要做的事情。是的,如果问题出现在我期望的地方,代码可能会运行,但它不会创建进程。它只是在现场运行该功能。

标签: python python-multiprocessing


【解决方案1】:

为了使代码正常工作,您需要将所有需求放在一个单元格中,然后运行它。

from multiprocessing import Pool
import other/modules/...

def do_something(arg1):
    print('Sleeping 1 second...')
    time.sleep(1)
    print('Done sleeping')

if __name__ == '__main__':
   pool = Pool(os.cpu_count()) 
   pool.map(do_something, list_of_args)

【讨论】:

    猜你喜欢
    • 2019-11-08
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2020-03-25
    • 2018-05-03
    • 1970-01-01
    相关资源
    最近更新 更多