Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – Python无法启动新线程,但不能达到线程限制大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个安装了 Python 3的嵌入式系统(armv5tejl AT91SAM9X25,运行基于buildroot的rootfs的128MB RAM).我已经让系统运行了很多天了,我已经开始对它进行一些python开发工作,但似乎遇到了创建新线程的问题. 如果我尝试运行以下程序: Type "help", "copyright", "credits" or "license" for more
我有一个安装了 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
             @R_779_10586@l       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,并且在他们的线程实现方面有任何文档吗?

大佬总结

以上是大佬教程为你收集整理的linux – Python无法启动新线程,但不能达到线程限制全部内容,希望文章能够帮你解决linux – Python无法启动新线程,但不能达到线程限制所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。