Mac上python多线程错误:...+[__NSPlaceholderDate initialize]...

错误提示

objc[27880]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
objc[27880]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.

错误原因

刚开始以为是代码的问题,后来才发现其实是macOS的High Sierra以上的操作系统对多线程的限制。

解决办法

在环境变量中添加export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

  • 终端
// 零时解决方法
// 在终端中执行以下命令,接着继续执行python程序
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
// 永久解决方案
// 终端中执行以下命令
sudo echo "export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES" >> ~/.bash_profile && source ~/.bash_profile
  • PyCharm
Run -> Edit Configuations... -> Environment variables
在上面的选择中添加`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`,重启`PyCharm`即可


原文地址:https://www.cnblogs.com/leocll/p/11008838.html

时间: 2024-11-11 14:20:55

Mac上python多线程错误:...+[__NSPlaceholderDate initialize]...的相关文章

Mac 上Python多版本切换

Mac上自带了Python2.x的版本,有时需要使用Python3.x版本做开发,但不能删了Python2.x,可能引起系统不稳定,那么就需要安装多个版本的Python. 1.安装Python3.x版本,我安装了3.6.1: 2.打开终端(terminal),输入:sudo vi ~/.bashrc: 3.在弹出的编辑页面顶部输入并保存: alias python2='/Library/Frameworks/Python.framework/Versions/2.x/bin/python2.x'

多核CPU上python多线程并行的一个假象

GIL 与 Python 线程的纠葛 GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题.运行下面这段 python 程序,CPU 占用率是多少? # 请勿在工作中模仿,危险:) def dead_loop(): while True: pass dead_loop() 答案是什么呢,占用 100% CPU?那是单核!还得是没有超线程的古董 CPU.在我的双核 CPU 上,这个死循环只会吃掉我一个核的工作负荷,也就是只占用 50% CPU.那如何能让它在双核

多核CPU上python多线程并行的一个假象(转)

转自:http://www.cnblogs.com/skying555/p/6527189.html GIL 与 Python 线程的纠葛 GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题.运行下面这段 python 程序,CPU 占用率是多少? # 请勿在工作中模仿,危险:) def dead_loop(): while True: pass dead_loop() 答案是什么呢,占用 100% CPU?那是单核!还得是没有超线程的古董 CPU.在我的双

MAC上python环境搭建

mac自带的有python,如果你需要查看版本,打开terminal输入以下命令: python --version 如果你需要安装新的python版本,有几种方法可以安装,一是去python官网下载安装文件,或者使用源码编译(这个不是很常用),推荐使用homebrew进行安装.如果你不知道homebrew是什么.推荐看一下它的官网:http://brew.sh :准确的讲,homebrew补足了mac不具备的类似linux的安装包管理器,使用起来异常方便.使用以下命令进行安装: ruby -e

iOS--实现UIView的抖动效果-类似Mac上密码输入错误效果

觉得是很不错的一个效果,转来收藏. // 直接传值调用下面的方法就OK,需要的拿走吧 #pragma mark 抖动动画 - (void)shakeAnimationForView:(UIView *) view {        // 获取到当前的View        CALayer *viewLayer = view.layer;        // 获取当前View的位置        CGPoint position = viewLayer.position;        // 移动

Mac上 python 找不到 yaml模块

(1)  yaml http://codyaray.com/2011/12/pyyaml-using-easy_install-on-mac-os-x-lion 1.报错 ImportError: No module named yaml 2.安装 sudo easy_install  pyyaml error 执行:sudo python -m easy_install pyyaml 执行:sudo easy_install  pyyaml (2)  Cheetah 下载cheetah:htt

在Mac上Python多版本切换

1.安装Homebrewhttps://brew.sh/index_zh-cn.html 2.通过brew安装pyenv1)命令行输入:$ brew install pyenv(如果一直卡在Updating Homebrew就按ctrl+c一次跳转brew update) 2)在home目录的 .bash_profile文件中添加: vi ~/.bash_profile 在最后增加 eval "$(pyenv init -)" 3)命令行输入,更新一下环境变量:$ source .ba

mac上配置python的安装环境杂记

现在的python的包都是通过pip安装的. 所以非常重要的一步是配置pip的安装源 vi ~/.pip/pip.conf [global] index-url = http://pypi.douban.com/simple 另外mac上python的包有两个位置 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/Library/Python/2.7/site-packages 第一个位置优先.

使用Python多线程犯的错误总结

在使用Python多线程的时候,在使用多线程编程的时候,由于对于变量作用域和多线程不是很熟悉,导致在使用多线程的时候,犯了低级的错误. 第一个错误: 在多线程中使用全局变量,导致多个线程修改全局变量.执行信息错乱,开始是几个个进程,后面就变成一个了.后来经过重新学习多线程,才把原来的错误修改过来. 脚本功能,多线程向设备上传和下载文件,测试ftp功能和性能.错误原因是把ftp变量设置为了全局变量,导致出现怪异的现象,开始有几个线程在跑,然后几个进程退出,最后变为一个,还出现了ftp密码错误的提示