linux – Python无法启动新线程,但不能达到线程限制
发布时间:2020-12-13 23:28:51 所属栏目:Linux 来源:网络整理
导读:我有一个安装了 Python 3的嵌入式系统(armv5tejl AT91SAM9X25,运行基于buildroot的rootfs的128MB RAM).我已经让系统运行了很多天了,我已经开始对它进行一些python开发工作,但似乎遇到了创建新线程的问题. 如果我尝试运行以下程序: Type "help","copyright",
我有一个安装了
Python 3的嵌入式系统(armv5tejl AT91SAM9X25,运行基于buildroot的rootfs的128MB RAM).我已经让系统运行了很多天了,我已经开始对它进行一些python开发工作,但似乎遇到了创建新线程的问题.
如果我尝试运行以下程序: Type "help","copyright","credits" or "license" for more information. >>> import threading >>> import time >>> def func(): ... i = 0 ... while True: ... i += 1 ... print(i) ... time.sleep(1) ... >>> >>> func() 1 2 3 ^CTraceback (most recent call last): File "<stdin>",line 1,in <module> File "<stdin>",line 6,in func KeyboardInterrupt >>> t = threading.Thread(target=func) >>> t.start() Traceback (most recent call last): File "<stdin>",in <module> File "/usr/lib/python3.4/threading.py",line 850,in start RuntimeError: can't start new thread >>> 如您所见,在尝试启动线程时,我收到上述错误.一些在线初始搜索似乎表明问题可能是由于系统运行到线程限制.这是ulimit -a的输出: # ulimit -a core file size (blocks,-c) 0 data seg size (kbytes,-d) unlimited scheduling priority (-e) 0 file size (blocks,-f) unlimited pending signals (-i) 961 max locked memory (kbytes,-l) 64 max memory size (kbytes,-m) unlimited open files (-n) 1024 pipe size (512 bytes,-p) 8 POSIX message queues (bytes,-q) 819200 real-time priority (-r) 0 stack size (kbytes,-s) 8192 cpu time (seconds,-t) unlimited max user processes (-u) 961 virtual memory (kbytes,-v) unlimited file locks (-x) unlimited 使用this method,我系统上的线程总数是75,这远低于961的限制.这是我当前的内存状态: # free -m total used free shared buffers cached Mem: 120 118 2 60 0 65 -/+ buffers/cache: 52 67 Swap: 0 0 0 我还通过运行echo 1>来运行内存压缩器.的/ proc / sys目录/ VM / compact_memory. 我想如果我重新启动设备一切都会正常工作(因为代码是已知的工作代码),但由于我现在有这种状态的设备,我很想知道问题是什么. 解决方法
可能只是在Python实现中未启用线程.对于开发人员来说,这是一个比较棘手的领域.谁提供了Python,并且在他们的线程实现方面有任何文档吗?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |