这个错误是什么意思?当我在进程中使用一些 C++ 包装的代码时,似乎会发生这种情况(当我在普通的 for 循环中使用它时没有错误)。
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
示例代码:
def split_to_chunks(items, k):
n = len(items) // k
chunks = []
for i in range(0, len(items), n):
chunks.append(items[i:i + n])
return chunks
def process_chunk(process_id, img_filepaths, output_dir):
print('Enter process_id:', process_id)
for img_filepath in img_filepaths:
try:
//Code section
except Exception as e:
print(f'Error: process_id: {process_id} : {img_filepath}', e)
print('End process_id:', process_id)
img_filepaths = get_img_filepaths(images_dir)
#n_processes = multiprocessing.cpu_count() // 2
n_processes = 1
img_filepaths_chunks = split_to_chunks(img_filepaths, n_processes)
processes = []
for i in range(n_processes):
process = multiprocessing.Process(
target=process_chunk,
args=(i, img_filepaths_chunks[i], output_dir)
)
processes.append(process)
for process in processes:
process.start()
for i, process in enumerate(processes):
process.join()
if process.exitcode != 0:
print(f'Error: process_id: {i} failed.')
#sys.exit(1)
最佳答案
似乎像这里建议的那样使用“spawn”https://turtlemonvh.github.io/python-multiprocessing-and-corefoundation-libraries.html正在解决问题。
import multiprocessing as mp
mp.set_start_method('spawn')
关于python - "The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec()."错误是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64174552/