【问题标题】:running two process simultaneously同时运行两个进程
【发布时间】:2016-09-01 07:09:48
【问题描述】:

我正在尝试同时运行 2 个进程,但只运行第一个进程

def add():
    while True:
        print (1)
        time.sleep(3)

def sud():
     while True:
        print(0)
        time.sleep(3)

p1 = multiprocessing.Process(target=add) 
p1.run()
p = multiprocessing.Process(target=sud)
p.run()

【问题讨论】:

  • 哦,嘿,又是这个错误。多年来,start/run 的名称选择引起了很多麻烦。
  • @user2357112 如果很常见,那肯定是骗子?
  • @jpmc26:可能,但我在快速搜索Python multiprocessing start run 时没有找到。
  • @user2357112 找到了一个描述差异的答案:Python multiprocessing.Process: start with local variable。或者也许我们需要一个更好的书面/冲洗出来的?

标签: python multiprocessing


【解决方案1】:

下面肯定会工作,但请尝试将其作为模块运行。不要在控制台或 Jupiter 笔记本中尝试,因为笔记本永远不会满足条件 "if name == 'ma​​in '”。 将整个代码保存在一个文件中,比如 process.py 并从命令提示符运行它。 编辑 - 它工作正常。刚才我试过了-

import multiprocessing
import time
def add():
    while True:
        print (1)
        time.sleep(3)

def sud():
     while True:
        print(0)
        time.sleep(3)
if __name__ == '__main__':
    p1 = multiprocessing.Process(name='p1', target=add)
    p = multiprocessing.Process(name='p', target=sud)
    p1.start()
    p.start()

【讨论】:

    【解决方案2】:

    您要查找的方法是start,而不是runstart 启动进程并调用run 执行新进程中的工作;如果您调用run,您将在调用进程而不是新进程中运行工作。

    【讨论】:

    • start() 什么都不做。
    • @YashwantSingh:你在 Windows 上吗?如果是这样,start 似乎什么也不做,因为您还有另一个错误:您没有使用 if __name__ == '__main__' 保护,由于缺少 fork,因此在 Windows 上必须使用 multiprocessing
    • @YashwantSingh:那你的代码或开发环境的某些部分肯定有问题,你没有向我们展示。
    • 我已经编辑了代码,请注意,这次使用 start(),但仍然只执行第一个。使用 Windows , anaconda
    • @YashwantSingh:我没有看到你指的编辑。
    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多