小编Tom*_*tyn的帖子

How can I list all packages/modules available to Python from within a Python script?

I have looked around and do not see a solution for this. What I would like to do is get a list of all packages available in Python at run-time.

I looked at these:

But they are not what I am looking for.

I attempted to do this:

import pkgutil
for pkg in pkgutil.walk_packages():
    print(pkg)  # or …
Run Code Online (Sandbox Code Playgroud)

python package

9
推荐指数
1
解决办法
4231
查看次数

PySide 将信号从 QThread 传递到另一个 QThread 中的插槽

我解决了我的问题,通过移动mySubQThread run()myQThread run()

也就是说,我仍然想知道为什么我之前尝试的方法不起作用。

我对线程很陌生。我遇到了这个问题,我想我可能正在处理错误的事情,无论如何。我对不同的方法持开放态度,我知道这可能有点令人费解。

我有一个 GUI 可以创建一个新的派生QThread让我们myQThread在该线程中调用它,我正在运行一个创建另一个线程的进程,调用它mySubQThread我遇到的问题如下,例如,我在 GUI 中定义了信号:signalA = QtCore.Signal(int)和一个插槽in 中myQThread的插槽mySubQThread似乎从未收到信号。

这是一个工作示例。(稍作修改)

from PySide import QtCore, QtGui
import time



class myQThread(QtCore.QThread):
    myThreadSignal = QtCore.Signal(int)
    def __init__(self, parent):
        super(myQThread, self).__init__(parent=parent)

    def run(self):
        self.subThread = mySubQThread(parent=self)
        self.myThreadSignal.connect(self.subThread.sub_thread_slot)
        self.myThreadSignal.connect(self.test_slot)
        print "starting subthread..."
        self.subThread.start()

        while self.subThread.isRunning():
            print "myQThread is alive!"
            time.sleep(1)
        print "myQThread exiting run..."
    @QtCore.Slot(int)
    def my_thread_slot(self, a):
        print "1b) Made it here!"
        self.myThreadSignal.emit(a)

    @QtCore.Slot(int)
    def …
Run Code Online (Sandbox Code Playgroud)

python multithreading pyside qthread python-2.7

4
推荐指数
1
解决办法
1244
查看次数

中断QThread睡眠

我想知道如何暂停 QThread,然后在收到信号时恢复。我已阅读并知道我可以做这样的事情:

def run(self):
    ...
    self.ready=False
    while not self.ready:
        self.sleep(1)
    ...
...
@QtCore.Slot()
def set_ready(self):
    self.ready = True
Run Code Online (Sandbox Code Playgroud)

但是,我想要做的是避免线程中的轮询。我不想将睡眠时间设置得很短并继续检查。我想睡觉,直到我从主线程收到继续的信号。

我在我的线程中正在做的是这样的:

(pseudo code)
with open file:
    read a block of data
    while data:
        sendThread = send the block via UDP
        read the next block of data
        while not ready or sendThread.isRunning:
            sleep(0.1)
Run Code Online (Sandbox Code Playgroud)

在我的主线程中,我设置了一个QtNetwork.QUdpSocket将readyRead连接到一个方法来处理传入的数据报并对其进行解码。当它收到我正在等待的响应时,它会向插槽发送一个信号,set_ready告诉线程发送另一个数据报。我并不总是知道其他系统需要多长时间才能响应,尽管我可能会有 30 秒左右的较长超时值。

有没有办法中断线程的睡眠?所以我可以做这样的事情:

sleep(30)
if not ready:
    Timeout occurred stop processing
else:
    Continue processing.
Run Code Online (Sandbox Code Playgroud)

python pyqt4 pyside qthread

3
推荐指数
1
解决办法
3081
查看次数

标签 统计

python ×3

pyside ×2

qthread ×2

multithreading ×1

package ×1

pyqt4 ×1

python-2.7 ×1