我一直在努力解决我的多处理脚本问题,我终于认为经过大约8个小时的尝试和失败,我终于找到了答案。我想导入一个包含相同目录中的列表的脚本。在我的主文件中,有2个函数:第一个是我的multiprocessing
函数,第二个是main
。另一个文件中的列表是我的多处理Pool
的迭代器,但是由于某种原因,它表示无法在我的模块中找到我的列表。
我的主文件有:
import mymodulename
import multiprocessing
def multiprocessingfunction(iteratornotactuallythename):
#my code here
def main():
pool = Pool(5)
results = pool.map(multiprocessingfunction, mylist#the one that python cant seem to find)
我尝试将其导入为*
,像这样导入单个列表:from mymodulename import mylist
而且我也尝试过这样导入它:import mymodulename
。
当我尝试导入单个名称时,出现以下错误:
ImportError: cannot import name _mylist_ from mymodulename
当我尝试正常导入或使用*
导入时,出现此错误:
"AttributeError: 'function' object has no attribute mylist
我所有的文件都在同一目录中
我的模块文件具有:
def starting():
mylist = [contentsoffile]
刚刚尝试的回溯是:
File "E:\a\nonargparseversion.py", line 16, in <module>
from mymodule import arrang
ImportError: cannot import name 'arrang' from 'mymodule'
答案 0 :(得分:2)
mylist
是starting()
函数的局部变量,这意味着导入后它对其他模块不可见,可以将其放在全局范围内(与def starting()
相同的缩进)或放置{{ return mylist
末尾的1}},而将starting()
的返回值用作starting()
。
答案 1 :(得分:0)
情况1:
const fs = require("fs");
const filePath = `./components/backups/${fileName}`;
const openJsonFile = fileName => {
fs.stat(fileLocation, function(err, stat) {
let data = [];
if (err == null) {
fs.readFile(fileLocation, function(err, data) {
return await JSON.parse(data);
});
} else if (err.code === "ENOENT") {
// file does not exist
console.log("file does not exist");
} else {
console.log("Some other error: ", err.code);
}
console.log("data", data);
return data;
});
};
情况2:
import mymodulename
import multiprocessing
def multiprocessingfunction(iteratornotactuallythename):
#my code here
def main():
pool = Pool(5)
results = pool.map(multiprocessingfunction, mymodulename.mylist)
如果出现错误,则应发布错误回溯信息。不只是一个句子。