Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python多线程中信号的使用_Python_Multithreading_Signals - Fatal编程技术网

python多线程中信号的使用

python多线程中信号的使用,python,multithreading,signals,Python,Multithreading,Signals,我在多个线程中运行以下循环,在每个线程中,如果线程空闲5秒,我需要发出信号让线程通过 for i in range(n): # do some network transferring work 但我在python文档中发现了这一点: 如果在同一程序中同时使用信号和线程,则必须小心。同时使用信号和线程时要记住的一点是:始终在执行的主线程中执行信号操作 因为我不应该把多线程和信号混合在一起,如果它太长的时间,我还需要跳过一个循环呢?你不能中断一个正在做阻塞的线程。在某些情况下,如果你真的

我在多个线程中运行以下循环,在每个线程中,如果线程空闲5秒,我需要发出信号让线程通过

for i in range(n):
    # do some network transferring work
但我在python文档中发现了这一点: 如果在同一程序中同时使用信号和线程,则必须小心。同时使用信号和线程时要记住的一点是:始终在执行的主线程中执行信号操作


<>因为我不应该把多线程和信号混合在一起,如果它太长的时间,我还需要跳过一个循环呢?

你不能中断一个正在做阻塞的线程。在某些情况下,如果你真的知道自己在做什么而不关心Windows,Python 3.3会让你成为可能,但一般来说,这不是一个正确的解决方案。如果你的网络传输工作涉及到很多小事情,你可以合理地经常检查计时器或标志。或者,如果您正在调用一个有超时的函数,或者可以这样做,例如,用select和recv循环替换recvall,这是一个简单的解决方案。但是如果它只是调用一些可能需要2分钟的函数,并且没有超时参数,那么您就无能为力了。因此,答案是不使用线程,例如,使用子进程。