Python 如何在.bat文件中使用“if\uuuuu name\uuuuuu=”\uuuuu main\uuuuuu:”?

Python 如何在.bat文件中使用“if\uuuuu name\uuuuuu=”\uuuuu main\uuuuuu:”?,python,python-3.x,batch-file,multiprocessing,main,Python,Python 3.x,Batch File,Multiprocessing,Main,我有一个在Spyder中运行良好的多处理函数,如下所示: if __name__ == '__main__': global results p = Pool(20) results = p.map(get_api_item, date_list) p.terminate() p.join() result = pd.concat(results) path = r'<path>' result.to_csv(os.path.join(pa

我有一个在Spyder中运行良好的多处理函数,如下所示:

if __name__ == '__main__':
    global results
    p = Pool(20)
    results = p.map(get_api_item, date_list)
    p.terminate()
    p.join()

result = pd.concat(results)

path = r'<path>'
result.to_csv(os.path.join(path,r'api_item.csv'), index=False)
…我得到这个错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "E:\Python\Anaconda3\lib\multiprocessing\spawn.py", line 105, in spawn_ma
in
    exitcode = _main(fd)
  File "E:\Python\Anaconda3\lib\multiprocessing\spawn.py", line 114, in _main
    prepare(preparation_data)
  File "E:\Python\Anaconda3\lib\multiprocessing\spawn.py", line 225, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "E:\Python\Anaconda3\lib\multiprocessing\spawn.py", line 277, in _fixup_m
ain_from_path
    run_name="__mp_main__")
  File "E:\Python\Anaconda3\lib\runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "E:\Python\Anaconda3\lib\runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "E:\Python\Anaconda3\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "<path to api>\api.py", line 29, in <module>
    result = pd.concat(results)
NameError: name 'results' is not defined

我认为这是因为service.bat文件可能没有调用它\uuuu main\uuuu。如何补救此问题?

请阅读并理解以下文件中的警告:

主模块的安全导入

确保新的Python解释器可以安全地导入主模块,而不会造成诸如 开始一个新的过程


您的模块将由其他进程导入,因此您不能拥有全局最外层的代码,这取决于您的_umain_u块中的代码。

删除该全局模块时会发生什么?除了主代码之外还有什么?依赖于该块的所有内容都应该在同一块中。您没有在error result=pd.concatresults中为我们提供代码……我认为您不需要全局,而pd.concat业务正依赖于此:-与.BAT文件完全无关。批处理文件所做的就是执行python。错误来自python,而不是批处理文件。
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "E:\Python\Anaconda3\lib\multiprocessing\spawn.py", line 105, in spawn_ma
in
    exitcode = _main(fd)
  File "E:\Python\Anaconda3\lib\multiprocessing\spawn.py", line 114, in _main
    prepare(preparation_data)
  File "E:\Python\Anaconda3\lib\multiprocessing\spawn.py", line 225, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "E:\Python\Anaconda3\lib\multiprocessing\spawn.py", line 277, in _fixup_m
ain_from_path
    run_name="__mp_main__")
  File "E:\Python\Anaconda3\lib\runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "E:\Python\Anaconda3\lib\runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "E:\Python\Anaconda3\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "<path to api>\api.py", line 29, in <module>
    result = pd.concat(results)
NameError: name 'results' is not defined