Python中文
首页
教程
问答
标签
搜索
登录
注册
Python和C/C++多线程:在C的后台运行多个执行Python的线程
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个非常具体的需求: 我想用Qt小部件创建一个python控制台,并且能够有几个独立的解释器。 现在,让我试着解释一下我的问题在哪里,以及我所做的所有尝试,按照我最想做的事情的顺序来处理那些我可以默认使用的问题</p> <ul> <li><p>第一点是pythoncapi(PyRun[…]、PyEval[…])中的所有函数都需要GIL锁定,这将禁止任何来自C的并发代码解释(否则我真的很高兴错了!!!:D)</p></li> <li><p>因此,我尝试了另一种方法,而不是“通常的方法”:我在python中创建了一个循环,对我的特殊文件调用read()并计算结果。此函数(作为构建的扩展实现)将阻塞,直到有数据可读取。(实际上,目前在C代码中使用的是一段时间,而不是基于pthread的条件) 然后,使用PyRun_simpleString()在另一个线程中启动循环。这就是问题所在:我的read函数,除了阻塞当前线程(这是完全正常的),它还阻塞了整个解释器,PyRun_simpleString()没有返回。。。</p></li> 最后,我有最后一个想法,它的风险相对较慢:在C++中有一个专用的线程来运行解释器,并且用Python做每一件事情来管理输入/输出。当作业需要执行一个循环时,可能会有一个作业需要执行。似乎不是很难做到,但我更喜欢问你:有没有一种方法可以使上述可能性发挥作用,还是有其他方法我没有考虑过,或者我最后的想法是最好的?</p></li> </ul>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>如果您的主要需求是有几个相互独立的解释器,那么您可能更适合使用fork()和exec()而不是多线程处理。在</p> <p>这样,每个口译员都会住在自己的地址空间中,而不会打扰其他人。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
5 回答
如何添加表示整数的擦边字符串?
10 回答
如何添加要在Bokeh中使用的新font.ttf文件?
2 回答
如何添加要显示的矩阵XY轴编号和XY轴
4 回答
如何添加计数?
6 回答
如何添加计数器函数?
7 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
5 回答
如何添加计数器来跟踪while循环中的月份和年份?
2 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
9 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
8 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
9 回答
如何添加评论拉梅尔亚姆
2 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
6 回答
如何添加谷歌地点自动完成到Flask?
10 回答
如何添加超时、python discord bot
6 回答
如何添加超过1dp的检查
3 回答
如何添加距离方法
2 回答
如何添加跟随游戏的敌人精灵
3 回答
如何添加路径以便python可以找到程序?
9 回答
如何添加身份验证/安全性以使用happybase访问HBase?
10 回答