【问题标题】:if __name__ == "__main__" dosent do anything如果 __name__ == "__main__" 什么都不做
【发布时间】:2017-07-03 12:10:48
【问题描述】:

我在这里简化了我的代码,但我想我也缩小了我的问题范围。当 mcedit 将其作为过滤器运行时,name 等于 ma​​in,因此您是否应该将 name 与 main 以外的其他程序进行比较,从而使 ma​​in PlaceBlock 还是不行?

from multiprocessing import Process
from pymclevel import alphaMaterials

displayName = "PlaceBlock"

def perform(level, box, options):

    x = box.minx
    z = box.minz

    def block(height):
         level.setBlockAt(x, height, z, 1)

    print(__name__)
    if __name__ == "__main__":
        print('Processing')
        p1 = Process(target=block, args=(1, ))
        p2 = Process(target=block, args=(2, ))

        p1.start()
        p2.start()

    p1.join()
    p2.join()

还要回答 cmets 中的一个问题,这是一个名为 mcedit 的我的世界程序的过滤器,用于编辑世界,过滤器只是编辑世界的程序。所以这个程序实际上做任何事情,除非你有这个程序

【问题讨论】:

  • 你是如何运行你的脚本的?
  • 关于代码的问题应该包含一个最小、完整的可验证示例。 “最小”,在这种情况下意味着它应该被修剪成最小的代码,让其他人自己看到你的问题,尽可能多地删除复杂的因素(例如,只有在问题不能解决时才使用multiprocessing复制没有它)。见stackoverflow.com/help/mcve
  • 移动if __name__ == '__main__':下除import语句外的所有代码,保留if语句前的所有函数开始。

标签: python multiprocessing main mcedit


【解决方案1】:

经过很多混乱之后,它发现它没有在进程中运行正确的文件,它将运行主程序,这就是它打开程序的第二个版本的原因,所以我将执行文件更改为打开python而不是程序,它工作正常!

【讨论】:

    【解决方案2】:

    您的脚本只能在MCEdit Unified 中运行。

    pymclevel 不能在 MCEdit 之外运行。

    您无需编写脚本即可执行此操作。如果按住 alt 键,它将显示立方体指针的坐标。转到世界上您想要放置方块的位置,然后使用fill and replace 工具用您想要的方块填充该坐标。

    【讨论】:

    • P.S. (后记)请随时纠正我的拼写/语法/格式,因为我是dyslexic,所以不擅长。
    猜你喜欢
    • 2018-11-22
    相关资源
    最近更新 更多