[代码:运行多线程]
int nRet = PyEval_ThreadsInitialized();
if (Py_IsInitialized() == 0)
{
Py_Initialize();
PyEval_InitThreads();
m_pyMainThread = PyEval_SaveThread();
}
std::shared_ptr<PythonWorkerThread> pythonWorker1 = std::make_shared<PythonWorkerThread>();
std::shared_ptr<PythonWorkerThread> pythonWorker2 = std::make_shared<PythonWorkerThread>();
pythonWorker1->setObjectName("1");
pythonWorker2->setObjectName("2");
pythonWorker1->start();
pythonWorker2->start();
[代码:运行WorkerThread]
void PythonWorkerThread::run()
{
qDebug() << "Thread Run = " << objectName() << " ThreadID = " << (int)QThread::currentThreadId();
auto state = PyGILState_Ensure();
for (int i = 0; i < 10; ++i)
{
PythonQt::self()->addVariable(PythonQt::self()->getMainModule(), "SharedValue", i);
QString strScrip = QString("import time\n" "time.sleep(%1)\n").arg(objectName().toInt());
PyRun_SimpleString(strScrip.toStdString().c_str());
qDebug() << "Thread = " << objectName() << ", i =" << i << PythonQt::self()->getMainModule().getVariable("SharedValue");
}
PyGILState_Release(state);
qDebug() << "Thread End" << objectName();
}
[结果:粗体是不正确的值]
Thread Run=“1”ThreadID=25884
Thread Run=“2”ThreadID=21848
Thread=“1”,i=0 QVariant(int,0)
Thread=“2”,i=0 QVariant(int,1)
Thread=“1”,i=1 QVariant(int,1)
Thread=“1”,i=2 QVariant(int,2)
Thread=“2”,i=1 QVariant(int,3)
Thread=“1”,i=3 QVariant(int,2)
Thread=“1”,i=4 QVariant(int,4)
Thread=“2”,i=2 QVariant(int,5)
Thread=“1”,i=5 QVariant(int,3)
Thread=“1”,i=6 QVariant(int,6)
Thread=“2”,i=3 QVariant(int,7)
Thread=“1”,i=7 QVariant(int,4)
Thread=“1”,i=8 QVariant(int,8)
Thread=“2”,i=4 QVariant(int,9)
Thread=“1”,i=9 QVariant(int,5)
螺纹端“1”
线程0x651c已退出,代码为0(0x0)。
Thread=“2”,i=5 QVariant(int,5)
Thread=“2”,i=6 QVariant(int,6)
Thread=“2”,i=7 QVariant(int,7)
Thread=“2”,i=8 QVariant(int,8)
Thread=“2”,i=9 QVariant(int,9)
螺纹端“2”
线程0x5558已退出,代码为0(0x0)。
目前没有回答
相关问题 更多 >
编程相关推荐